C# 修改位图像素颜色后导出未生效,代码问题排查求助
问题错误说明
- 核心逻辑错误:你对像素的修改操作是在临时创建的
Bitmap实例image上完成的,最终导出时调用的仍然是未做任何修改的原始Image对象File的Save方法,修改后的像素内容自然不会被写入到导出文件中。 - 潜在问题:代码未对GDI+相关的非托管资源做释放处理,长期运行可能出现内存泄漏、源文件被锁定无法修改的问题。
修复方案
你只需要将导出时的保存对象替换为修改后的Bitmap对象即可,同时补充资源释放逻辑,修改后的Export_Click代码参考如下:
private void Export_Click(object sender, EventArgs e) { // 用using自动释放Bitmap资源 using (Bitmap image = new Bitmap(File)) { image.SetPixel(50, 50, Color.Black); SaveFileDialog f = new SaveFileDialog(); f.Filter = "JPG(*.JPG)|*.jpg|PNG(*.PNG)|*.png"; if (f.ShowDialog() == DialogResult.OK) { // 保存修改后的Bitmap对象,而非原始的File对象 image.Save(f.FileName); // 如果需要同步更新界面显示的图片,可同步更新File对象 File?.Dispose(); File = new Bitmap(image); pictureBox1.Image = File; } } }
内容的提问来源于stack exchange,提问作者Apple Pie
相关产品推荐
相关产品推荐

