我試圖下載,調整大小然後將圖像上傳到Azure blob存儲。將位圖對象上傳到Azure blob存儲
我可以下載原始圖像,並調整其大小,像這樣:
private bool DownloadandResizeImage(string originalLocation, string filename)
{
try
{
byte[] img;
var request = (HttpWebRequest)WebRequest.Create(originalLocation);
using (var response = request.GetResponse())
using (var reader = new BinaryReader(response.GetResponseStream()))
{
img = reader.ReadBytes(200000);
}
Image original;
using (var ms = new MemoryStream(img))
{
original = Image.FromStream(ms);
}
const int newHeight = 84;
var newWidth = ScaleWidth(original.Height, 84, original.Width);
using (var newPic = new Bitmap(newWidth, newHeight))
using (var gr = Graphics.FromImage(newPic))
{
gr.DrawImage(original, 0, 0, newWidth, newHeight);
// This is where I save the file, I would like to instead
// upload it to Azure
newPic.Save(filename, ImageFormat.Jpeg);
}
return true;
}
catch (Exception e)
{
return false;
}
}
我知道我可以使用UploadFromFile上傳保存的文件,但不知道是否有一種方法可以直接從我的目標做,所以我不必先保存它?我已經嘗試從流上傳,並且可以在使用ms函數後執行此操作,但是隨後我調整文件大小
'我嘗試了從流上傳'。你的嘗試在哪裏?無論如何,你的代碼有問題。在使用'original'之前,你不應該使用'ms'。 –
在調整大小之前,我可以使用original.UploadFromStream(memoryStream),但這是在調整大小之前 – Evonet
而不是將newPic保存到文件,然後將其上傳到blob存儲,則需要直接上載newPic。我的理解是否正確? –