c# - 尝试以 PNG 格式保存到流中我得到“表达式已被评估并且没有值无效”
问题描述
我正在尝试在 .net core 2.0 中创建 API 以将字符串转换为 base64 图像 Qrcode,如下所示。我目前在我的项目中使用“ZXing.net”和“CoreCompat.System.Drawing”块包。当我尝试将流保存为 PNG
即“bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 我得到表达式已被评估并且没有值无效”
我会感谢你的帮助。提前致谢
` var ss = "123longstringtoencodedhhhh34444hhh123";
var qr = new ZXing.BarcodeWriterPixelData
{
Format = ZXing.BarcodeFormat.QR_CODE,
Options = new QrCodeEncodingOptions { Height = 250, Width = 250, Margin = 0 }
};
var pixelData = qr.Write(ss);
using (var bitmap = new System.Drawing.Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
using (var ms = new MemoryStream())
{
var bitmapData = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, pixelData.Width, pixelData.Height),
System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
try
{
// we assume that the row stride of the bitmap is aligned to 4 byte multiplied by the width of the image
System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0,
pixelData.Pixels.Length);
}
finally
{
bitmap.UnlockBits(bitmapData);
}
// trying to save to stream as PNG
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
}
错误 bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 表达式已被评估并且没有值 void`
解决方案
注意:需要两个依赖项,可以从 Nuget 包管理器作为 nuget 包安装:
- CoreCompat.System.Drawing
- 中兴网
我收到了错误消息,因为我错过了这一行
“var pixelData = qr.Write(Encoding.Default.GetString(ss));”
var ss = "123longstringtoencodedhhhh34444hhh123";
请参阅下面的完整代码
var qr = new ZXing.BarcodeWriterPixelData()
{
Format = ZXing.BarcodeFormat.QR_CODE,
Options = new QrCodeEncodingOptions { Height = 250, Width = 250, Margin = 0 }
};
var pixelData = qr.Write(Encoding.Default.GetString(ss));
using (var bitmap = new Bitmap(pixelData.Width, pixelData.Height, System.Drawing.Imaging.PixelFormat.Format32bppRgb))
using (var ms = new MemoryStream())
{
var bitmapData = bitmap.LockBits(new Rectangle(0, 0, pixelData.Width, pixelData.Height),
System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
try
{
System.Runtime.InteropServices.Marshal.Copy(pixelData.Pixels, 0, bitmapData.Scan0, pixelData.Pixels.Length);
}
finally
{
bitmap.UnlockBits(bitmapData);
}
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return Convert.ToBase64String(ms.ToArray())
}
}
推荐阅读
- javascript - 编程排序功能在制表器中不起作用
- spring - 将 Spring Security 添加到 Spring Boot 应用程序后找不到请求属性
- swift - Swift 5.1 我可以在另一个视图控制器中访问结构实例声明吗?
- maven - Maven项目无法解析pom
- javascript - 关闭 HTML5 视频播放器的替代方法
- sql - Node.js 加载资源失败
- javascript - 有条件地向打印视图中的数据表行添加样式
- fortran - 函数声明警告:函数“f”在 (1) 处的返回值未设置 [-Wreturn-type]
- python - Python TK 库水平滚动条未显示
- amazon-web-services - 从 EC2 实例以编程方式确定可用区