Старая функциональность
Код: Выделить всё
public FileResult DownloadBarcode(string BarCodeString, string CampaignName, string StartDate)
{
try
{
using (WebClient wc = new WebClient())
{
var byteArr = wc.DownloadData(string.Format(
https://foo.InternalStringToBitmapConverter,
BarCodeString));
string fileName = string.Format("{0}-{1}.tiff",
CampaignName.Replace("#", "").Replace(" ", ""),
StartDate.Replace("/", "-").Substring(0, StartDate.IndexOf(" ")));
return File(byteArr, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
}
catch (System.Net.WebException ex)
{
log.Error("Error retrieving barcode from service, error: " + ex.Message, ex);
return null;
}
}
Теперь, когда я пытаюсь преобразовать это в 8.0, VS сообщает мне, что WebClient устарел и нужно использовать HttpClient. Я пытался реализовать ту же функциональность, но не могу найти способ перенести этот код на версию 8.0.
Чтобы это работало, мне нужно:
Функция, которая принимает входные данные строку (что будет похоже на «AA123456789»), преобразует строку в растровую карту и сохраняет полученный штрих-код в формате .tiff. файл. Затем этот файл необходимо отправить обратно в браузер.
Ранее я добился этого, загрузив BMP, но мне нужно, чтобы файл был в формате .tiff. Я не нашел способа преобразовать этот код в файл для загрузки в формате tiff.
Код: Выделить всё
public ActionResult DownloadBarcode(string item)
{
var bitmapWriter = new BarcodeWriter
{
Format = BarcodeFormat.CODE_128, // change barcode type as needed
Options = new ZXing.Common.EncodingOptions
{
Height = 150,
Width = 1158,
}
};
var height = 150; // These sizes must be stagnant
var width = 1158;
var bitmap = bitmapWriter.Write(item.ToString());
Bitmap barcodeImage = new Bitmap(width, height, PixelFormat.Format32bppRgb);
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
int i = ((y * width) + x);
Color color = Color.FromArgb(0, bitmap.Pixels[i].Red, bitmap.Pixels[i].Green, bitmap.Pixels[i].Blue);
barcodeImage.SetPixel(x, y, color);
}
}
var now = DateTime.Now;
MemoryStream stream = new MemoryStream();
barcodeImage.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
Byte[] bytes = stream.ToArray();
return File(bytes, "image/bmp", "AA" + item + ".Bmp");
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... t-4-5-to-8
Мобильная версия