Öne Çıkan Yayın

Uzak Masaüstü Bağlantısı ve Modem Port Ayarı

İyi günler bu konumuzda uzak masaüstü bağlantısı ve modem port ayarını anlatacağım. Normalde uzak masaüstü bağlantısı ayarını açtığımızda ye...

16 Temmuz 2014 Çarşamba

Resmi Hafızada Boyutlandırma C#

Merhaba arkadaşlar bu makalemde sizlere C# Asp.net ile bir resmi orjnal haline bir etki etmeden sunucu hafızasında geçiçi olarak boyutlandırmayı göstereceğim. Örn: 1250x980 bir resim var biz bu resmi sadece bir sayfada geçici olarak 80x50 göstermek istiyoruz işte anlatacağım makale ile bunu gerçekleştirebileceğiz.

Öncelikle 1. resmin gösterileceği sayfa
               2. hafıza işleminin yapılacağı sayfa

Şimdi 1. sayfa örn: "görüntüle.aspx" içerisimde de bir adet img nesnesi var:

         <img src="resimboyutla.aspx?dosyaadi=1.jpg" />

yukarıda fark ettiğiniz gibi img nesnesinin kaynağını bir resim değil aspx sayfası olarak gösterdim ve resmin adını gönderdim. Şimdi ikinci aşama resimboyutla.aspx içini tasarlayalım.


  
    public partial class resimboyutla : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
                string path = Server.MapPath("~/images/" + Request.QueryString["dosyaadi"]);
                Image original = Image.FromFile(path);
                Image resized = ResizeImage(original, new Size(100, 100));
                MemoryStream memStream = new MemoryStream();
                resized.Save(memStream, ImageFormat.Jpeg);

                Byte[] bytes = new Byte[memStream.Length];
                memStream.Position = 0;
                memStream.Read(bytes, 0, (int)bytes.Length);
                Response.ContentType = "image/JPEG";
                Response.BinaryWrite(bytes);
                original.Dispose();
                resized.Dispose();
                Response.End();
        }

        public static Image ResizeImage(Image image, Size size, bool preserveAspectRatio = true)
        {
            int newWidth;
            int newHeight;
            int ofsetx = 0;
            int ofsety = 0;
            if (preserveAspectRatio)
            {
                int originalWidth = image.Width;
                int originalHeight = image.Height;
                float percentWidth = (float)size.Width / (float)originalWidth;
                float percentHeight = (float)size.Height / (float)originalHeight;
                float percent = percentHeight < percentWidth ? percentHeight : percentWidth;
                newWidth = (int)(originalWidth * percent);
                newHeight = (int)(originalHeight * percent);

                if (newWidth > newHeight)
                {
                    ofsetx = 0;
                    ofsety = (size.Height - newHeight) / 2;
                }
                else
                {
                    ofsetx = (size.Width - newWidth) / 2;
                    ofsety = 0;
                }
            }
            else
            {
                newWidth = size.Width;
                newHeight = size.Height;
            }
            Image newImage = new Bitmap(size.Width, size.Height);
            using (Graphics graphicsHandle = Graphics.FromImage(newImage))
            {
                graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic;
                graphicsHandle.FillRectangle(new SolidBrush(Color.White), 0, 0, size.Width, size.Height);
                graphicsHandle.DrawImage(image, ofsetx, ofsety, newWidth, newHeight);
            }
            return newImage;
        }
    }

Hiç yorum yok:

Yorum Gönder