.net 图片缩放质量问题
我要做一个程序来把本来很大尺寸的图片生成宽限定在750,高为同比例缩放的图片。
但是我发觉,图片的质量不是很高(应该说已经很高了,可是领导不认为,我用photoshop生成同样大小的图片的确质量比我的高,要仔细观察图片细节才看的出来),我想问得是,.net 下有没有更高质量的方法,或者有没有其他组件可以使用?
http://adow.thmz.com/pk/default.html 这里有一批图片,分别是我通过程序和ps制作的同样尺寸的图片(上一张是ps生成的,下一张是.net 生成的),如果观察一些细节(比如字),的确能看出有少许不同。
我用了如下的属性设置,我感觉已经是.net下最好的质量了:
Bitmap img = new Bitmap(object_width, object_height);
img.SetResolution(72f, 72f);
Graphics gdiobj = Graphics.FromImage(img);
gdiobj.CompositingQuality = CompositingQuality.HighQuality;
gdiobj.SmoothingMode = SmoothingMode.HighQuality;
gdiobj.InterpolationMode = InterpolationMode.HighQualityBicubic;
------解决方案--------------------试试这个,我觉得质量可以
public static void GenerateHighThumbnail( string oldImagePath, string oldFileName, int width, int height )
{
System.Drawing.Image oldImage = System.Drawing.Image.FromFile(oldImagePath + oldFileName);
int newWidth, imgWidth;
int newHeight, imgHeight;
//。。。。。。。。。。。
System.Drawing.Image thumbnailImage = oldImage.GetThumbnailImage(newWidth, newHeight, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(thumbnailImage);
//处理JPG质量的函数
System.Drawing.Imaging.ImageCodecInfo ici = GetEncoderInfo( "image/jpeg ");
if (ici != null)
{
System.Drawing.Imaging.EncoderParameters ep = new System.Drawing.Imaging.EncoderParameters(1);
ep.Param[0] = new System.Drawing.Imaging.EncoderParameter(Encoder.Quality, (long)100);
bm.Save(oldImagePath + "s " + oldFileName, ici, ep);
//释放所有资源,不释放,可能会出错误。
ep.Dispose();
ep = null;
}
ici = null;
bm.Dispose();
bm = null;
thumbnailImage.Dispose();
thumbnailImage = null;
oldImage.Dispose();
oldImage = null;
}
private static bool ThumbnailCallback( )
{
return false;
}
private static ImageCodecInfo GetEncoderInfo( String mimeType )
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0 ; j < encoders.Length ; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
------解决方案--------------------www.wave12.com有个缩略图水印组件wsImage3.5 效果很好