Это код, который я сейчас реализовал:
string image = String.Empty;
ImageField imageField = itm.Fields["image"];
MediaItem mediaItem = imageField.MediaItem;
if (mediaItem != null)
{
Stream stream = mediaItem.GetMediaStream();
Image img = Image.FromStream(stream);
Bitmap bmp = new Bitmap(img, 188, 122);
ImageConverter converter = new ImageConverter();
Byte[] bytes = (byte[])converter.ConvertTo(bmp, typeof(byte[]));
stream.Read(bytes, 0, bytes.Length);
image = "data:" + mediaItem.MimeType + "," + Convert.ToBase64String(bytes);
}
return image;
То, что я хотел бы сделать, это преобразовать все изображения, которые проходят через PNG. Проблема, которую я сейчас имею в виду, заключается в том, что изображения GIF, которые я читал из Sitecore, после преобразования, которое вы видите выше, отображают как черные изображения.
Я пробовал некоторые реализации, но результат, похоже, тот же.
Может ли кто-нибудь помочь?
С наилучшими пожеланиями, Мариус.
Кажется, что фактическая проблема заключалась в том, что у меня была дополнительная строка кода, которая была беспорядочной, и я говорю об этом: stream.Read(bytes, 0, bytes.Length);
Это мой последний код, который в настоящее время работает:
string image = String.Empty;
ImageField imageField = itm.Fields["image"];
MediaItem mediaItem = imageField.MediaItem;
if (mediaItem != null)
{
Stream stream = mediaItem.GetMediaStream();
Image img = Image.FromStream(stream);
Bitmap bmp = new Bitmap(img, 188, 122);
ImageConverter converter = new ImageConverter();
Stream pngStream = new MemoryStream();
bmp.Save(pngStream, ImageFormat.Png);
Byte[] bytes = (byte[])converter.ConvertTo(Image.FromStream(pngStream), typeof(byte[]));
image = "data:image/png;base64," + Convert.ToBase64String(bytes);
}
return image;
Я надеюсь, что это поможет кому-то.
Хорошего дня.