我正在使用以下代码行Image从文件中打开:
pictureBox1.Image = Image.FromFile("test.png");
Run Code Online (Sandbox Code Playgroud)
我希望它能锁定文件,将图像加载到内存中,设置pictureBox1.Image为内存中的副本,然后释放锁定.在现实中,锁不会消失,直到我Dispose()的Image记忆.我无法释放我不再使用的硬盘上的文件锁,直到我删除了我正在使用的内存中的文件.
微软的网站在一篇带有C#标签的文章中提及它,但他们的解决方案是用visual basic编写的,这对我来说毫无用处.
总结:我想设置pictureBox1.Image存储的图像"test.png",然后让用户编辑或删除"test.png"或其他.
我有一个小问题,我找不到任何解决方案.我想将GIF转换为byte []然后再转换为GIF.我工作正常,但我失去了动画.
当我开始时它是一个完美的动画GIF(我在一个PictureBox元素中显示它).但是转换后我遇到了第一帧.
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create("creativetechs.com/i/tip_images/ExampleAnimation.gif");
HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream stream = httpWebReponse.GetResponseStream();
Image img = Image.FromStream(stream);
MemoryStream ms = new MemoryStream();
img.Save(ms,img.RawFormat);
byte [] bytes = ms.ToArray();
Image img2 = Image.FromStream(new MemoryStream(bytes));
int frames1 = img.GetFrameCount(System.Drawing.Imaging.FrameDimension.Time);
int frames2 = img2.GetFrameCount(System.Drawing.Imaging.FrameDimension.Time);
Run Code Online (Sandbox Code Playgroud)
我也尝试过不使用RawFormat System.Drawing.Imaging.ImageFormat.Gif.没改变一件事.frames1是正确的帧数.frames2是1.
PictureBox我的GUI中有2个元素.一个展示img和另一个img2.但是img2不是动画img.怎么了?
我也尝试使用序列化来创建我的byte [].
我将图像序列化并再次反序列化,它也没有改变任何东西.这怎么可能?