【问题标题】:Convert images to PNG after reading media item from Sitecore从 Sitecore 读取媒体项目后将图像转换为 PNG
【发布时间】:2014-11-23 12:24:30
【问题描述】:

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

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 图像,经过您在上面看到的所有转换后,呈现为黑色图像。

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

有人可以帮忙吗?

最好的问候,马吕斯。

【问题讨论】:

    标签: c# asp.net png sitecore converter


    【解决方案1】:

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

    我希望它对某人有所帮助。

    祝你有美好的一天。

    【讨论】:

    • 太棒了!由于这是正确答案,我将删除我的答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多