c# - C# Bitmap.Save() 执行但未创建文件
问题描述
使用 .net Framework 4.8 我有一种将图像调整为缩略图的方法。它似乎工作正常,因为我可以在调整大小后看到文件属性并且一切看起来都很好。但是,当我执行应该将新缩略图保存到新文件夹的保存方法时,在新文件夹中找不到文件。所有路径都是正确的。而且我可以确认源文件没有被更改(如预期的那样)。最后我没有得到任何错误。任何想法出了什么问题?这张图片的原始宽度是 600,看截图你可以看到新的宽度是 212,所以这确认我们有一个有效的位图要保存。
谢谢。
解决方案
就像我有一个像 bmp 这样的位图然后现在我想像这样保存它......
BitmapImage bitmapimage;
using (MemoryStream memory = new MemoryStream())
{
bmp.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
memory.Position = 0;
bitmapimage = new BitmapImage();
bitmapimage.BeginInit();
bitmapimage.StreamSource = memory;
bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
bitmapimage.EndInit();
}
imgQR1.Source = bitmapimage;
string filePath = @"C:\Demo_Project\Image\test.png";
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapimage));
using (var fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.Create))
{
encoder.Save(fileStream);
}
推荐阅读
- c - 为什么 cmov 总是返回 t_val?
- php - 将新列添加到 WooCommerce 管理产品列表,其中包含销售产品的折扣百分比
- xml - 解析 XSD 以获取节点列表
- c# - 创建线程会增加功耗和 CPU 消耗
- spring - 关于春季休息日期
- javascript - Nodejs - 使用 docker rest api 的调用
- c++ - C ++如何阻止随机引擎产生负数?
- laravel - 如何将在第一个文本框中键入的文本显示为第二个文本框中的 slug?
- flutter - Flutter Firestore 和 androidx 兼容性问题
- devexpress - 如何在 Devexpress 报表设计器 UI 中添加客户下拉菜单