gpt4 book ai didi

c# - 更新后图像未保存,在 c# 中使用 FileStream 或简单位图

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:59 24 4
gpt4 key购买 nike

我正在为桌面应用程序中的一个实用程序工作,与一些图形工作相关。

我必须加载小缩略图和全尺寸位图。我正在使用此代码执行此操作。

 FileStream fs = new FileStream("myphoto.jpg", FileMode.Open);
Image imgPhoto = Image.FromStream(fs);
fs.Close();
PictureBox p = new PictureBox();
p.Name = "p1";
p.Image = imgPhoto;
flowPanel.Controls.Add(p);
//----
FileStream fs = new FileStream("myphoto_thumb.jpg", FileMode.Open);
Image img = Image.FromStream(fs);
fs.Close();
Button b_thumb = new Button();
b_thumb.Name = "thumb1";
b_thumb.BackgroundImage = img;
flowBottom.Controls.Add(b_thumb);

在此之后,我需要在这个图片框的图像上添加一些效果。当我在图片框中的主(大)图像添加一些效果时,我也在 botton 背景图像中添加相同的效果。当我将这个缩略图保存到它正在保存现有的缩略图,但是当我将 picturebox 中的大图像保存到现有文件“myphoto.jpg”时,它会给我错误信息,例如文件正在被另一个进程使用

//---- Add some Effects to image of Picturebox ---- //
PictureBox tempPic = flowPanel.Controls["p1"];
tempPic.Image.Save("myphoto.jpg",ImageFormat.Jpeg);

我在谷歌和 stackoverflow 上找到了很多解决方案,但找不到有用的。如果有任何好的解决方案,请帮助。可能很简单,但我已经尝试了 10 多个小时但失败了。

最佳答案

您不会关闭您打开的 FileStream。我总是将这种东西包装在 using 结构中,所以它会自动被破坏,从而关闭:

using (FileStream fs = new FileStream("myphoto.jpg", FileMode.Open)) {
// Do stuff
}

tempPic.Image.Save("myphoto.jpg",ImageFormat.Jpeg);

关于c# - 更新后图像未保存,在 c# 中使用 FileStream 或简单位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13961973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com