保存图片后图片变得很大,原来32k保存后120k

whynotwanghuilong 2012-10-16 08:52:42
怎么才能把图片变小,System.Drawing.Imaging.Encoder.Quality 说是1-100, 但我修改成那个都一样都是120k

ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici = null;
foreach (ImageCodecInfo i in icis)
{
if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif")
{
ici = i;
}
}
EncoderParameters encoderParams = new EncoderParameters();
long[] quality = new long[1];
quality[0] = 80; //压缩比例,
EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
//EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)80));
encoderParams.Param[0] = encoderParam;
bitmap.Save(thumbnailPath, ici, encoderParams);
encoderParams.Dispose();
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
whynotwanghuilong 2012-10-16
  • 打赏
  • 举报
回复
求高手,急用,我怎么修改quality 1--100 我都试过了,出来的都是超大容量(120k),没反应
whynotwanghuilong 2012-10-16
  • 打赏
  • 举报
回复
bmPhoto.Save(mm, System.Drawing.Imaging.ImageFormat.Jpeg);
这个出来的清晰度很低,原32k 出来时7k左右,清晰度太差~
liutao132 2012-10-16
  • 打赏
  • 举报
回复

public static byte[] ResizeImageFile(byte[] imageFile, int targetSizeW, int targetSizeH)

{

System.Drawing.Image original = System.Drawing.Image.FromStream(new MemoryStream(imageFile));

int targetH, targetW;

targetW = targetSizeW;

targetH = (int)(original.Height * ((float)targetSizeW / (float)original.Width));

if (targetH > targetSizeH)

{

targetH = targetSizeH;

targetW = (int)(original.Width * ((float)targetSizeH / (float)original.Height));

}

if (targetSizeW < (int)original.Width || targetSizeH < (int)original.Height)

{

System.Drawing.Image imgPhoto = System.Drawing.Image.FromStream(new MemoryStream(imageFile));

// Create a new blank canvas. The resized image will be drawn on this canvas.

Bitmap bmPhoto = new Bitmap(targetW, targetH, PixelFormat.Format24bppRgb);

bmPhoto.SetResolution(72, 72);

Graphics grPhoto = Graphics.FromImage(bmPhoto);

grPhoto.SmoothingMode = SmoothingMode.AntiAlias;

grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;

grPhoto.PixelOffsetMode = PixelOffsetMode.HighQuality;

grPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, targetW, targetH), 0, 0, original.Width, original.Height, GraphicsUnit.Pixel);

// Save out to memory and then to a file. We dispose of all objects to make sure the files don't stay locked.

MemoryStream mm = new MemoryStream();

bmPhoto.Save(mm, System.Drawing.Imaging.ImageFormat.Jpeg);

original.Dispose();

imgPhoto.Dispose();

bmPhoto.Dispose();

grPhoto.Dispose();

return mm.GetBuffer();

}

else

{

return imageFile;

}

}

62,127

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧