C Sharp Resim Boyutlandırma , Resize Image

  1. Eslem78
    6
    810
    5/20/2019 2:11:00 PM

    C# da resmi yeniden boyutlandırma işlemini nasıl yapabilirim ? Resim küçültme yada bazı durumlarda da resim büyütme kodlarına ihtiyacım var , efektif bir yol ne var

    c# .net 28 gün önce 223 Görüntüleme

( 2 ) Cevap

  1. koraydrk
    6
    1795
    5/20/2019 3:57:00 PM

    aşağıdaki metotda verdiğim yöntem ile boyutlandırma yaparken çok fazla kalite kaybı yaşamadan sonuca ulaşabilirsin

    //c# resim yeniden boyutlandırma
    //yüksek kalite ile
    public Bitmap ImageResize(Image oldImage, int newWidth, int newHeight)
    {
        //yeni resim için rectangle ve bitmap objesi oluşturma
        var rectangle = new Rectangle(0, 0, newWidth, newHeight);
        var newImage = new Bitmap(newWidth, newHeight);
    
        newImage.SetResolution(oldImage.HorizontalResolution, oldImage.VerticalResolution);
    
        using (var graphics = Graphics.FromImage(newImage))
        {
            //resmin kaliteli olarak boyutlanrılması ayarları
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphics.CompositingMode = CompositingMode.SourceCopy;
            graphics.CompositingQuality = CompositingQuality.HighQuality;        
            graphics.SmoothingMode = SmoothingMode.HighQuality;
            graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
    
            using (var wrapMode = new ImageAttributes())
            {
                wrapMode.SetWrapMode(WrapMode.TileFlipXY);
                graphics.DrawImage(oldImage, rectangle, 0, 0, oldImage.Width,oldImage.Height, GraphicsUnit.Pixel, wrapMode);
            }
        }
    
        //yeni resim geri dön
        return newImage;
    }
    
  2. askinglr34
    3
    2417
    5/20/2019 5:23:00 PM

    yukardaki kodların biraz daha sadesini paylaşayım bende , Interpolation , PixelOffset ve Smoothing Mode ayarları yapılsa yeterli diye düşünüyorum , bu ayarların açıklamalarını kodda ekledim

    //code.replyfeed.com , resimyeniden boyutlandırma
    public Bitmap ResizeImage(Image oldImage, int newWidth, int newHeight)
    {
        Bitmap newImage = new Bitmap(newWidth, newHeight);
        using (Graphics grph = Graphics.FromImage(newImage))
        {
            //enterpolasyon modu ayarı
            grph.InterpolationMode = InterpolationMode.HighQualityBicubic;
            //yeni resmin kalite ayarı
            grph.SmoothingMode = SmoothingMode.HighQuality;
            //piksellerin nasıl kaydırılacağı ayarı
            grph.PixelOffsetMode = PixelOffsetMode.HighQuality;
            //yeniden boyutlandırma işlemi
            grph.DrawImage(oldImage, new Rectangle(0, 0, newWidth, newHeight));
        }
        return newImage;
    }
    

Cevabınız