从Sitecore读取媒体项目后,将图像转换为PNG

本文关键字:图像 转换 PNG Sitecore 读取 媒体 项目 | 更新日期: 2023-09-27 18:24:58

这是我现在已经实现的代码:

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。我现在的问题是,我从Sitecore读取的GIF图像,经过上面看到的所有转换,呈现为黑色图像。

我尝试了一些实现,但结果似乎是一样的。

有人能帮忙吗?

致以最良好的问候,马吕斯。

从Sitecore读取媒体项目后,将图像转换为PNG

实际的问题似乎是我有一行额外的代码把事情搞砸了,我说的是这个: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;

我希望这对某人有帮助。

祝你今天过得愉快。