【发布时间】:2011-02-23 23:34:32
【问题描述】:
我在将图像从 PNG 转换为 JPG 时遇到问题。从 jpg 到 jpg 非常好,但从 PNG 到 jpg 存在像素化问题。我已经在这段代码中实现了压缩方法,但仍然无法生成高质量的图像。
各位有什么想法吗?
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing.Imaging;
using System.Drawing;
using System.IO;
using System.Drawing.Drawing2D;
public partial class _Default : System.Web.UI.Page
{
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "image/JPEG";//convert toJPEG for web usage
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"E:\websites\LogoMaster\LogoID4.png");
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =System.Drawing.Imaging.Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L);//SET to the highest quality
myEncoderParameters.Param[0] = myEncoderParameter;
// bmp1.Save(@"E:\websites\LogoMaster\TestPhotoQualityHundredp.jpg", jgpEncoder, myEncoderParameters);
bmp1.Save(Response.OutputStream, jgpEncoder, myEncoderParameters);
bmp1.Dispose();
}
}
【问题讨论】:
-
你最近不是问过这个吗?您只是删除并重新询问吗?
-
是的,问题中有一个错误。不错的收获