2011-05-19 87 views
0

我在尋找一個ImageResizer像下面那樣支持MaxWidth & MaxHeight ...
我在哪裏可以找到它?
下面的模塊做許多其他工作,這對我來說不是必需的。
只是想改變格式&支持maxwidth和maxheight。ImageResizer - 支持maxWidth和MaxHeight - >意思是保持長寬比

ImageResizer

+0

http://stackoverflow.com/questions/249587/high-quality-image-scaling-c – 2011-05-19 14:59:41

+0

模塊的版本3有一個插件架構,因此在默認情況下只提供調整大小和格式轉換,加其他一些小功能。額外的東西通過36+插件添加。現在它也是免費的,您可以從http://imageresizing.net/download下載源代碼。 – 2011-10-26 15:01:59

回答

2

您可以編寫一個強制實現最大寬度和最大高度並保持寬高比的包裝。

例如,假設您的圖像爲640 x 120,您的最大值爲1,920 x 1,440。現在,你想的是圖像儘可能的大,所以你寫:

ResizeImage(image, 1920, 1440)

如果你要做到這一點,長寬比就會被槍斃。

您需要計算現有圖像的寬高比並調整值。

// Compute existing aspect ratio 
double aspectRatio = (double)image.Width/image.Height; 

// Clip the desired values to the maximums 
desiredHeight = Math.Min(desiredHeight, MaxHeight); 
desiredWidth = Math.Min(desiredWidth, MaxWidth); 

// This is the aspect ratio if you used the desired values. 
double newAspect = (double)desiredWidth/desiredHeight; 

if (newAspect > aspectRatio) 
{ 
    // The new aspect ratio would make the image too tall. 
    // Need to adjust the height. 
    desiredHeight = (int)(desiredWidth/aspectRatio); 
} 
else if (newAspect < aspectRatio) 
{ 
    // The new aspect ratio would make the image too wide. 
    // Need to adjust the width. 
    desiredWidth = (int)(desiredHeight * aspectRatio); 
} 

// You can now resize the image using desiredWidth and desiredHeight 
+0

嗯。我後退了嗎? – 2011-05-19 17:57:39

1

如果庫確實比你需要更沒關係。如果它滿足你的需求,就使用它。額外的東西根本不會損害你。

+0

親愛的@NerdFury ...我只是在學習這個瓷磚,直到那一天...... – MoonLight 2011-05-19 20:06:30

+0

該模塊的第3版有一個插件架構,所以默認情況下它只提供調整大小和格式轉換,以及其他一些小功能。額外的東西通過36+插件添加。現在它也是免費的,您可以從http://imageresizing.net/download下載源代碼。 – 2011-10-26 15:02:38