Преобразование изображений в PNG после чтения медиа-элемента из Sitecore

1

Это код, который я сейчас реализовал:

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, после преобразования, которое вы видите выше, отображают как черные изображения.

Я пробовал некоторые реализации, но результат, похоже, тот же.

Может ли кто-нибудь помочь?

С наилучшими пожеланиями, Мариус.

Теги:
converter
png
sitecore

1 ответ

0
Лучший ответ

Кажется, что фактическая проблема заключалась в том, что у меня была дополнительная строка кода, которая была беспорядочной, и я говорю об этом: 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;

Я надеюсь, что это поможет кому-то.

Хорошего дня.

  • 0
    Потрясающие! Так как это правильный ответ, я бы удалил свой ответ. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню