WinForms中使用Image类将JPG转PNG时图片被裁剪的问题求助
解决C# WinForms中JPG转PNG图片被裁剪的问题
直接使用Image.FromFile读取JPG后调用Save转PNG时,原图片的元数据(比如EXIF中的裁剪偏移信息)会导致输出的PNG出现裁剪问题。以下是修正后的实现方案:
修正代码
using (Image originalImage = Image.FromFile(imagePath)) { // 创建与原图尺寸匹配的新Bitmap using (Bitmap targetBitmap = new Bitmap(originalImage.Width, originalImage.Height)) { using (Graphics g = Graphics.FromImage(targetBitmap)) { // 将原图完整绘制到新Bitmap上,规避元数据影响 g.DrawImage(originalImage, 0, 0, originalImage.Width, originalImage.Height); // 可选:保留原图的分辨率设置 targetBitmap.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution); } targetBitmap.Save("Image.png", ImageFormat.Png); } }
关键说明
- 用
using语句自动管理资源,避免内存泄漏 - 通过重新绘制图片的方式,排除原JPG元数据导致的裁剪逻辑
- 若需保留原图的DPI参数,可添加
SetResolution代码行
内容的提问来源于stack exchange,提问作者Jeff Li
相关产品推荐
相关产品推荐

