use*_*961 1 asp.net image-processing thumbnails
我发布了另一个主题,得到了一些温和的答复,但是尽管答案解决了问题的质量方面,但他们创建了另一个问题,图像大小以kb为单位。 Asp.net图像调整大小质量
这是问题。
我有一个2MB的图像,我想减小到480px的宽度。
我使用三种不同的方法来调整大小:
1)在Fileupload上运行以下代码:
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);
Run Code Online (Sandbox Code Playgroud)
好处:以kb为单位的大小变小(大约80Kb)。
缺点:视觉质量太差了
2)在Fileupload上运行以下代码(上述文章中提供的解决方案):
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);
Run Code Online (Sandbox Code Playgroud)
好处:视觉质量好
缺点:大小仍然很大(大约400kb)
3)使用Windows Paint软件并“手动”将图像缩小到480px宽度
好处:1)和2)的好处->视觉质量很好,并且大小减小到80kb
问题是:
复制第3项行为(良好的视觉质量和较小的kb大小)的代码是什么?
谢谢
尝试以下方法之一:
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);
Run Code Online (Sandbox Code Playgroud)
要么
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);
Run Code Online (Sandbox Code Playgroud)
要么
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);
Run Code Online (Sandbox Code Playgroud)
这只会稍微降低质量并大大减小尺寸,不过我不确定哪一个会更好。
这里还有很多其他选项可供尝试:
http://msdn.microsoft.com/zh-CN/library/system.drawing.imaging.pixelformat%28v=vs.110%29.aspx
| 归档时间: |
|
| 查看次数: |
4648 次 |
| 最近记录: |