我要做一个程序来把本来很大尺寸的图片生成宽限定在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;
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;
解决方案 »
- Response.Redirect失效
- asp.net网站部署
- datalist分页后如何获取前一页(后一页)的数据
- asp.net导航问题
- 降序排序某一列,其他列顺序不变,请问如何实现?
- ajax里含有 ref参数的该怎么调
- ===小问题,迷糊了,谁解决的快,马上给分(下拉列表的问题)===
- 关于静态变量丢失的问题,不会是.NET的BUG吧,那我就惨了!!!!!!!!!!!!
- 如果COOKIE不存在,UserName.Text = Request.Cookies["NewMycity"]["UserName"].ToString();这个语句是不是就会出现错误啊?应该怎么解决?
- asp.net中如何叹服TextBox的内容自动上下滚动啊?
- javascript中如何访问后台方法
- Random怎么用啊?
{
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;
}
.net下有第三方组件吗,商业的也可以。
同一张原图,我程序生成的缩略图只要120几k,而photoshop生成的同尺寸的却要600多k,到底在哪里损失了质量?还有什么地方可以设置呢?
本节内容
如何:列出已安装的解码器
描述如何列出计算机上的可用编码器。如何:列出已安装的解码器
描述如何列出计算机上的可用解码器。如何:确定编码器支持的参数
描述如何列出编码器支持的 EncoderParameters。如何:将 BMP 图像转换为 PNG 图像
描述如何以不同的图像格式保存图像。如何:设置 JPEG 压缩级别
描述如何更改图像的质量级别。