2014-01-27 73 views
1

我發佈了這個其他主題,得到了一些溫和的回覆,但儘管答案解決了問題的質量方面,但他們還是以kb爲單位創建了圖像大小的另一個問題。 Asp.net image resizing qualityAsp.net在kb中縮小了圖像大小

這是問題。

我有一個2MB的圖像,我想減少到480px寬度。

我用三種不同的方式來調整其大小:

1)在文件上傳是把這個代碼:

System.IO.Stream st = FileUploadPost.PostedFile.InputStream; 
myImage = System.Drawing.Image.FromStream(st); 
thumb = myImage.GetThumbnailImage(newWidth, newHeight, null, System.IntPtr.Zero); 
thumb.Save(myPath); 

優點:在KB大小變小(大約80KB)。

缺點:視覺質量是可怕的

2)在文件上傳跑這個代碼(解決方案提供上提後):

Bitmap newImg = new Bitmap(newWidth, newHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);        
Graphics newGraphic = Graphics.FromImage(newImg); 
newGraphic.DrawImage(myImage, 0, 0, newWidth, newHeight); 
newGraphic.Dispose(); 
newImg.Save(myPath); 

優點:外觀質量好

缺點:尺寸繼續非常大(約400kb)

3)使用Windows Paint軟件和「手動」將圖像縮小到480px寬度

優點:的優點都1)和2) - >視覺質量好,尺寸減小到大約80KB

的問題是:

什麼是再現第3項行爲的代碼(良好的視覺質量和更小的尺寸在kb)?

感謝

+0

嘗試http://imageresizing.net/ – luke2012

回答

4

嘗試其中之一:

Bitmap newImg = new Bitmap(newWidth, newHeight, System.Drawing.Imaging.PixelFormat.Format16bppRgb555);        
Graphics newGraphic = Graphics.FromImage(newImg); 
newGraphic.DrawImage(myImage, 0, 0, newWidth, newHeight); 
newGraphic.Dispose(); 
newImg.Save(myPath); 

Bitmap newImg = new Bitmap(newWidth, newHeight, System.Drawing.Imaging.PixelFormat.Format16bppArgb1555);        
Graphics newGraphic = Graphics.FromImage(newImg); 
newGraphic.DrawImage(myImage, 0, 0, newWidth, newHeight); 
newGraphic.Dispose(); 
newImg.Save(myPath); 

Bitmap newImg = new Bitmap(newWidth, newHeight, System.Drawing.Imaging.PixelFormat.Format8bppIndexed);        
Graphics newGraphic = Graphics.FromImage(newImg); 
newGraphic.DrawImage(myImage, 0, 0, newWidth, newHeight); 
newGraphic.Dispose(); 
newImg.Save(myPath); 

這應該只是稍微降低質量,顯着減少了尺寸,我不知道哪一個會更好。

下面是其他選項的一大堆嘗試,以及:

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.pixelformat%28v=vs.110%29.aspx

+0

嗨,哥們!這真的起作用了!非常感謝!!!上面的第一個選項將圖像縮小到193kb(我之前獲得的尺寸的一半),並且視覺上質量保持不變。選項2和3出現錯誤。也會嘗試其他鏈接。再次感謝! – user2974961