SORU
28 HAZİRAN 2011, Salı


Orantılı olarak Yukseklik ve Genislik kısıtlamaları ile yeniden boyutlandırma, görüntü

System.Drawing.Image kullanarak.

Eğer bir görüntü genişliği veya yüksekliği en fazla aşarsa, orantılı olarak boyutlandırılmış olması gerekir . Sonra ne genişlik ya da yükseklik hala sınırını aşan emin olmak için gereken yeniden boyutlandırılabilir.

Genişlik ve Yükseklik maksimum ve minimum için otomatik olarak (en büyük boyutu mümkün) daha fazla değil kadar getirilecektir ve de oranını korumak.

CEVAP
28 HAZİRAN 2011, Salı


Bu gibi?

public static void Test()
{
    using (var image = Image.FromFile(@"c:\logo.png"))
    using (var newImage = ScaleImage(image, 300, 400))
    {
        newImage.Save(@"c:\test.png", ImageFormat.Png);
    }
}

public static Image ScaleImage(Image image, int maxWidth, int maxHeight)
{
    var ratioX = (double)maxWidth / image.Width;
    var ratioY = (double)maxHeight / image.Height;
    var ratio = Math.Min(ratioX, ratioY);

    var newWidth = (int)(image.Width * ratio);
    var newHeight = (int)(image.Height * ratio);

    var newImage = new Bitmap(newWidth, newHeight);

    using (var graphics = Graphics.FromImage(newImage))
        graphics.DrawImage(image, 0, 0, newWidth, newHeight);

    return newImage;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • Lamarr Wilson

    Lamarr Wilso

    27 Aralık 2008
  • LiquidMusick

    LiquidMusick

    23 Aralık 2010