2010-01-06 109 views
0

我有一個(600 * 800大小)或任意大小的圖像文件。現在我需要將它們轉換成尺寸爲****(110 * 110)的縮略圖圖像尺寸****如何在保存文件夾時調整圖像大小

但是,如果我減小圖像的大小,我不應該改變圖像的質量。因爲一旦我們縮小圖像尺寸,圖像的質量就會消失

有什麼方法可以在不影響圖像質量的情況下將圖像轉換爲縮略圖圖像嗎? )

當你縮小圖像您不減少它的質量,只有當你嘗試把它帶回它的原始尺寸從縮小版的質量就會受到影響任何幫助將是巨大

回答

3

那麼,關於如何做到這一點,有一個有趣的材料here可能會幫助你。

關於質量的下降,如果你的意思是分辨率,那麼只要你縮小圖像尺寸就沒有辦法,你就會丟掉不再能夠重建的空間信息。當然如果你使用某種內插法,但它永遠不會和你的原始圖片一樣。

你可以做的是存儲每個版本的一個版本。

下面是從鏈接獲得的代碼,說實話,我認爲最後5行代碼從位圖開始b =新的位圖(destWidth,destHeight);足以解決您的問題。

private static Image resizeImage(Image imgToResize, Size size) 
{ 
    int sourceWidth = imgToResize.Width; 
    int sourceHeight = imgToResize.Height; 

    float nPercent = 0; 
    float nPercentW = 0; 
    float nPercentH = 0; 

    nPercentW = ((float)size.Width/(float)sourceWidth); 
    nPercentH = ((float)size.Height/(float)sourceHeight); 

    if (nPercentH < nPercentW) 
     nPercent = nPercentH; 
    else 
     nPercent = nPercentW; 

    int destWidth = (int)(sourceWidth * nPercent); 
    int destHeight = (int)(sourceHeight * nPercent); 

    Bitmap b = new Bitmap(destWidth, destHeight); 
    Graphics g = Graphics.FromImage((Image)b); 
    g.InterpolationMode = InterpolationMode.HighQualityBicubic; 

    g.DrawImage(imgToResize, 0, 0, destWidth, destHeight); 
    g.Dispose(); 

    return (Image)b; 
}