Я использую библиотеку 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
это происходит только на клиент-сервере, а не в других местах.
- --------- Редактировать 1 --------
Поскольку при создании образа на хост-сервере у меня все еще возникали проблемы, сейчас я внес несколько изменений в код. Вместо сохранения изображения штрих-кода я преобразую его в строку 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;
}
, чтобы передать его в iTextcharp использовать
byte[] imageBytes = Convert.FromBase64String(bs64);
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(imageBytes);