我正在尝试调整上传到我的容器的图像的大小,以便为我的网站创建缩略图和我的图像的各种其他版本.
我上传的图像必须更正内容类型“image / jpeg”,但是当我使用下面的代码创建它们的新版本时,它变成“application / octet-stream”.
我在这里失踪了什么?
using ImageResizer; using ImageResizer.ExtensionMethods; public static void Run(Stream myBlob,string blobname,string blobextension,Stream outputBlob,TraceWriter log) { log.Info($"C# Blob trigger function Processed blob\n Name:{blobname} \n Size: {myBlob.Length} Bytes"); var instructions = new Instructions { Width = 570,Mode = FitMode.Crop,Scale = ScaleMode.Both,}; ImageBuilder.Current.Build(new ImageJob(myBlob,outputBlob,instructions)); }
编辑:解决方案.
#r "Microsoft.WindowsAzure.Storage" using ImageResizer; using ImageResizer.ExtensionMethods; using Microsoft.WindowsAzure.Storage.Blob; public static void Run(Stream myBlob,CloudBlockBlob outputBlob,Scale = ScaleMode.Both }; Stream stream = new MemoryStream(); ImageBuilder.Current.Build(new ImageJob(myBlob,stream,instructions)); stream.Seek(0,SeekOrigin.Begin); outputBlob.Properties.ContentType = "image/jpeg"; outputBlob.UploadFromStream(stream); }
解决方法
使用流输出时,函数会将您的内容类型默认为application / octet-stream.
使用ICloudBlob类型之一,它应该允许您指定blob的内容类型.
这是一个可以作为参数绑定的类型的备忘单:https://jhaleyfiles2016.blob.core.windows.net/public/Azure%20WebJobs%20SDK%20Cheat%20Sheet%202014.pdf