[英]How do I save my resized image to my Azure Blob Storage in my ASP.NET Core Application?
I'm using the ImageSharp
library to rescale my images before they are uploaded to Azure, the application hangs with no errors when it reaches the UploadBlob
action and I think it's the stream causing it.在将图像上传到 Azure 之前,我正在使用
ImageSharp
库重新缩放我的图像,应用程序在到达UploadBlob
操作时挂起且没有错误,我认为是 stream 导致它。 When the image is uploaded the information is gathered from the image stream, I create an empty MemoryStream
, resize the image using ImageSharp
, stuff the MemoryStream
with my newly scaled image and try to upload that MemoryStream
to Azure and I don't think it likes it as that is where it hangs.上传图像时,从图像 stream 收集信息,我创建一个空
MemoryStream
,使用ImageSharp
调整图像大小,用我新缩放的图像填充MemoryStream
并尝试将该MemoryStream
上传到 Azure 我不认为它喜欢它就挂在那里。
Is MemoryStream the correct thing to use in this instance or is it something else? MemoryStream 是在这种情况下使用的正确东西还是其他东西?
CarController.cs汽车控制器.cs
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(Car car)
{
// Define the cancellation token.
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
if (ModelState.IsValid)
{
//Access the car record
_carService.InsertCar(car);
//Get the newly created ID
int id = car.Id;
//Give it a name with some virtual directories within the container
string fileName = "car/" + id + "/car-image.jpg";
string strContainerName = "uploads";
//I create a memory stream ready for the rescaled image, not sure this is right.
Stream outStream = new MemoryStream();
//Access my storage account
BlobServiceClient blobServiceClient = new BlobServiceClient(accessKey);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(strContainerName);
//Open the image read stream
var carImage = car.ImageFile.OpenReadStream();
//Rescale the image, save as jpeg.
using (Image image = Image.Load(carImage))
{
int width = 250;
int height = 0;
image.Mutate(x => x.Resize(width, height));
image.SaveAsJpeg(outStream);
}
var blobs = containerClient.UploadBlob(fileName, outStream);
return RedirectToAction(nameof(Index));
}
return View(car);
}
It's not got anything to do with the ImageSharp library.它与 ImageSharp 库没有任何关系。
You need to reset your outStream
position after saving.保存后,您需要重置
outStream
position。 BlobContainerClient
is trying to read from the end of the stream. BlobContainerClient
正在尝试从 stream 的末尾读取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.