繁体   English   中英

如何将调整大小的图像保存到 ASP.NET 核心应用程序中的 Azure Blob 存储?

[英]How do I save my resized image to my Azure Blob Storage in my ASP.NET Core Application?

在将图像上传到 Azure 之前,我正在使用ImageSharp库重新缩放我的图像,应用程序在到达UploadBlob操作时挂起且没有错误,我认为是 stream 导致它。 上传图像时,从图像 stream 收集信息,我创建一个空MemoryStream ,使用ImageSharp调整图像大小,用我新缩放的图像填充MemoryStream并尝试将该MemoryStream上传到 Azure 我不认为它喜欢它就挂在那里。

MemoryStream 是在这种情况下使用的正确东西还是其他东西?

汽车控制器.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);
}

它与 ImageSharp 库没有任何关系。

保存后,您需要重置outStream position。 BlobContainerClient正在尝试从 stream 的末尾读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM