我正在使用Zxing库创建条形码和内存流,以将其保存到服务器文件夹中。 在本地服务器和测试服务器上一切正常,但是当我在客户端服务器上发布代码时,它既不会创建条形码图像,也不会在该服务器位置获取图像位置。 这是我为此过程创建的代码-
var writer = new BarcodeWriter();
writer.Format = BarcodeFormat.CODE_128;// QR_CODE;
var result = writer.Write(printArray[0]);
string path = Server.MapPath("/images/code/" + ComplaintId + ".jpg");
var barcodeBitmap = new Bitmap(result);
using (MemoryStream memory = new MemoryStream())
{
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
{
barcodeBitmap.Save(memory, ImageFormat.Jpeg);
byte[] bytes = memory.ToArray();
fs.Write(bytes, 0, bytes.Length);
}
}
此代码用于将条形码保存在服务器位置。
string ImagePath = ComplaintId + ".jpg";
imgQRcode.Src = "~/images/code/" + ImagePath;
并使用此行将其绑定到img标签。
它显示类似错误
找不到路径g:\ xyz \ images \ code \ 103.jpg的一部分
这只会在客户端服务器上发生,而不会在其他地方发生。
由于在主机服务器上创建映像时仍然遇到问题,因此我现在对代码进行了一些更改。与其保存条形码图像,不如将其转换为Base64字符串并使用它。
这里是代码更改
var barWriter = new BarcodeWriter();
barWriter.Format = BarcodeFormat.CODE_128;// QR_CODE;
var barResult = barWriter.Write("printbar");
var barcodeBitmap = new Bitmap(barResult);
string bs64 = ToBase64String(barcodeBitmap, ImageFormat.Jpeg);
和Tobase64String函数
public static string ToBase64String(Bitmap bmp, ImageFormat imageFormat)
{
string base64String = string.Empty;
MemoryStream memoryStream = new MemoryStream();
bmp.Save(memoryStream, imageFormat);
memoryStream.Position = 0;
byte[] byteBuffer = memoryStream.ToArray();
memoryStream.Close();
base64String = Convert.ToBase64String(byteBuffer);
byteBuffer = null;
return base64String;
}
并具有将base64绑定到图像的功能
public static string GetImageSrc(string base64Src)
{
return "data:image/png;base64," + base64Src;
}
使用
将其提供给iTextcharpbyte[] imageBytes = Convert.FromBase64String(bs64);
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(imageBytes);