C# 图像质量不好
问题:C# 图像质量不好,c#,.net,gdi+,C#,.net,Gdi+,问题: Image ResizeImage(Image original, int targetWidth) { double percent = (double)original.Width / targetWidth; int destWidth = (int)(original.Width / percent); int destHeight = (int)(original.Height / percent); Bitmap b = new Bitmap
Image ResizeImage(Image original, int targetWidth)
{
double percent = (double)original.Width / targetWidth;
int destWidth = (int)(original.Width / percent);
int destHeight = (int)(original.Height / percent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((Image)b);
try
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.DrawImage(original, 0, 0, destWidth, destHeight);
}
finally
{
g.Dispose();
}
return (Image)b;
}
几天前我在这里找到了这个函数,但是我再也找不到了。它调整图像大小,但输出质量不好。看起来颜色深度是8位
第一张照片是原始照片,第二张照片是经过Photoshop处理的,最后一张照片的大小由代码调整:
样本:
Image ResizeImage(Image original, int targetWidth)
{
double percent = (double)original.Width / targetWidth;
int destWidth = (int)(original.Width / percent);
int destHeight = (int)(original.Height / percent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((Image)b);
try
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.DrawImage(original, 0, 0, destWidth, destHeight);
}
finally
{
g.Dispose();
}
return (Image)b;
}
功能:
Image ResizeImage(Image original, int targetWidth)
{
double percent = (double)original.Width / targetWidth;
int destWidth = (int)(original.Width / percent);
int destHeight = (int)(original.Height / percent);
Bitmap b = new Bitmap(destWidth, destHeight);
Graphics g = Graphics.FromImage((Image)b);
try
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
g.DrawImage(original, 0, 0, destWidth, destHeight);
}
finally
{
g.Dispose();
}
return (Image)b;
}
看起来像是在某个阶段将图像转换为索引颜色像素格式。检查并尝试明确设置
像素格式
和分辨率
属性。也许这个问题及其答案对您有帮助。您不应该从原始的创建图形对象吗<代码>图形g=图形.FromImage(原始)
位图b=新位图(destWidth,destHeight,System.Drawing.Imaging.PixelFormat.Format24bppRgb);会有帮助吗?我试试。。。