使用ImageMagick压缩天蓝色blob中的图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ImageMagick压缩天蓝色blob中的图像相关的知识,希望对你有一定的参考价值。

我正在编写一个azure函数来压缩上传到blob存储的图像,并将压缩的图像保存到另一个blob。我使用Magick.NET nuget包。

[FunctionName("Function1")]
    public static void Run(
        [BlobTrigger("test/{name}", Connection = "")]Stream image,
        [Blob("test-output/{name}", FileAccess.ReadWrite)]CloudBlockBlob output,
        string name,
        TraceWriter log)
    {
        log.Info($"C# Blob trigger function Processed blob
 Name:{name} 
 Size: {image.Length} Bytes");
        using (MemoryStream memoryStream = new MemoryStream())
        {
            image.CopyTo(memoryStream);
            ImageOptimizer imageOptimizer = new ImageOptimizer();
            imageOptimizer.Compress(memoryStream);
            output.UploadFromStream(memoryStream);
        }
    }

但是以下行引发异常,

enter image description here

对于如何解决这个问题,有任何的建议吗?

答案

复制后,你需要倒回MemoryStream

image.CopyTo(memoryStream);
memoryStream.Position = 0;

否则,该位置将位于数据的末尾,对其的任何读取操作将返回0数据。

以上是关于使用ImageMagick压缩天蓝色blob中的图像的主要内容,如果未能解决你的问题,请参考以下文章

将imagemagick blob保存到节点缓冲区

ImageMagick - 较小的调整大小的图像是一个更大的文件大小

天蓝色 blob 存储中的 XLSX 文件作为 zip 文件下载

ImageMagick:PNG的无损最大压缩?

使用 ghostscript 实现与 imagemagick 的转换相同的 PDF 压缩

使用convert(ImageMagick)批量压缩图像