0
我使用Silverlight和http://imagetools.codeplex.com/構建文件上傳器。Silverlight調整圖像大小和最終文件大小
它的一切都好,但我的最終文件是約300KB(大小)與400×300(分辨率)。
當我在MS Paint上打開它並將它另存爲jpg時,尺寸設置爲正常。
我的懷疑是de enconde o文件是(png)但我現在不怎麼樣。
我的代碼:
public static byte[] resize(string extension,int width,int height,int orientation)
{
//Decoders.AddDecoder<BmpDecoder>();
//Decoders.AddDecoder<PngDecoder>();
Decoders.AddDecoder<JpegDecoder>();
//Decoders.AddDecoder<GifDecoder>();
var newImg = new ExtendedImage();
if (orientation == 0)
newImg = ExtendedImage.Resize(img, width, height, new ImageTools.Filtering.NearestNeighborResizer());
else
newImg = ExtendedImage.Resize(img, height, width, new ImageTools.Filtering.NearestNeighborResizer());
//newImg = applyWaterMark(newImg);
//var s = new MemoryStream();
var s = newImg.ToStreamByExtension(extension);
return ReadFully(s);
}
ImageTools用於jpeg編碼的默認質量爲100%。如果您以該質量從繪畫程序中保存該文件,是否還有很大的區別?什麼是「正常」尺寸?另外,我認爲你的AddDecoder調用應該是靜態構造函數,所以它們只添加一次,每次調用方法時都不會調用它。 – hatchet
解決了! var e = new ImageTools.IO.Jpeg.JpegEncoder(); var s = new MemoryStream(); e.Quality = 90; e.Encode(newImg,s); // var s = newImg.ToStream(); return s.GetBuffer(); – JoeLoco
請將您的解決方案作爲本問題的答案。 – AnthonyWJones