使用 ImageMagick 压缩 azure blob 中的图像
Compress images in azure blob with ImageMagick
我正在编写一个 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\n Name:{name} \n Size: {image.Length} Bytes");
using (MemoryStream memoryStream = new MemoryStream())
{
image.CopyTo(memoryStream);
ImageOptimizer imageOptimizer = new ImageOptimizer();
imageOptimizer.Compress(memoryStream);
output.UploadFromStream(memoryStream);
}
}
但是下面一行抛出异常,
关于如何解决这个问题有什么建议吗?
复制完成后,需要倒带MemoryStream
image.CopyTo(memoryStream);
memoryStream.Position = 0;
否则,该位置将在数据的末尾,对其进行的任何读取操作都将 return 0 个数据。
我正在编写一个 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\n Name:{name} \n Size: {image.Length} Bytes");
using (MemoryStream memoryStream = new MemoryStream())
{
image.CopyTo(memoryStream);
ImageOptimizer imageOptimizer = new ImageOptimizer();
imageOptimizer.Compress(memoryStream);
output.UploadFromStream(memoryStream);
}
}
但是下面一行抛出异常,
关于如何解决这个问题有什么建议吗?
复制完成后,需要倒带MemoryStream
image.CopyTo(memoryStream);
memoryStream.Position = 0;
否则,该位置将在数据的末尾,对其进行的任何读取操作都将 return 0 个数据。