c# - 转换图像时的 ImageMagick 和透明度问题

标签 c# imagemagick imagemagick-convert

我有这个转换图像的方法。我是这样做的:

    /// <summary>
    /// Converts any image to png and uploads it to azure
    /// </summary>
    /// <param name="data">The byte array of the image</param>
    /// <returns>The path to the azure blob</returns>
    public async Task<string> ConvertImage(byte[] data)
    {

        // Create our image
        using (var image = new MagickImage(data))
        {

            //// Resize the image
            //image.Resize(600, 600);

            // Create a new memory stream
            using (var memoryStream = new MemoryStream())
            {

                // Set to a png
                image.Format = MagickFormat.Png;
                image.VirtualPixelMethod = VirtualPixelMethod.Transparent;
                image.Write(memoryStream);
                memoryStream.Position = 0;

                // Create a new blob block to hold our image
                var blockBlob = container.GetBlockBlobReference(Guid.NewGuid().ToString() + ".png");

                // Upload to azure
                await blockBlob.UploadFromStreamAsync(memoryStream);

                // Return the blobs url
                return blockBlob.StorageUri.PrimaryUri.ToString();
            }
        }
    }

但是运行那段代码,生成的图像不是透明的,即使源文件是透明的。 有谁知道为什么吗?

最佳答案

您的源 SVG 文件不透明,但您可以告诉 ImageMagick/Magick.NET 使用透明背景。您应该像这样阅读图像:

// Create our image
using (var image = new MagickImage())
{
  image.Settings.BackgroundColor = MagickColors.Transparent;
  image.Read(data);
}

关于c# - 转换图像时的 ImageMagick 和透明度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729839/

相关文章:

c++ - 向 png 图像添加和检索一些元数据

ImageMagick 验证图像完整性

imagemagick - 防止 ImageMagick 转换为灰度

image-processing - ImageMagick 中的convert -unsharp 和convert -adaptive-sharpen 有什么区别

c# - Windows Phone 8 中的设备方向

c# - Oracle 日期格式 — 数据读取器无法识别 to_char 函数

perl - 如何使用 PerlMagick 替换任何不是特定颜色的颜色?

c# - 通过 "Service Reference"连接到 SSL SOAP 主机并传递安全 header

c# - SqlConnection连接数据的替代方案是什么?

node.js - 如何在 Node imagemagick模块转换函数中传递多个参数