首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageSharp旋转切断部分图像

ImageSharp旋转切断部分图像
EN

Stack Overflow用户
提问于 2019-01-02 04:36:28
回答 1查看 579关注 0票数 0

我试着用ImageSharp旋转一个图像。

这是我的.NET核心API代码:

代码语言:javascript
复制
    public async Task<IActionResult> Rotate([FromBody] PhotoRotateViewModel model)
    {
        var photo = await _photoRepository.Get(model.PhotoId);

        if (photo != null)
        {
            byte[] imageBytes;
            HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(photo.imageUrl);
            WebResponse imageResponse = imageRequest.GetResponse();

            Stream responseStream = imageResponse.GetResponseStream();

            using (BinaryReader br = new BinaryReader(responseStream))
            {
                imageBytes = br.ReadBytes(500000);
                br.Close();
            }
            responseStream.Close();
            imageResponse.Close();

            var rotatedImage = RotateImage(imageBytes);


        }
        return Ok();
    }

    private byte[] RotateImage(byte[] imageInBytes)
    {
        using (var image = Image.Load(imageInBytes, out var imageFormat))
        {
            image.Mutate(x => x.Rotate(90));
            return ImageToByteArray(image, imageFormat);
        }
    }

    private byte[] ImageToByteArray(Image<Rgba32> image, IImageFormat imageFormat)
    {
        using (var ms = new MemoryStream())
        {
            image.Save(ms, imageFormat);
            return ms.ToArray();
        }
    }

看上去新图像被剪掉了。

我附上了我的原始图像,我得到的结果

原件:

轮调:

这似乎发生在我尝试过的所有图像上

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-02 06:12:11

我看过api文档。在库或代码(旋转图像的部分)中,似乎都没有问题。但让我感兴趣的是,当你读取字节时,你会为要读取的字节设置一个数字。不要像这样读取imageBytes = br.ReadBytes(500000);,而是尝试读取字节直到流的末尾。要做到这一点,请在下面的代码中进行尝试。

代码语言:javascript
复制
using (BinaryReader br = new BinaryReader(responseStream))
{
        imageBytes = br.ReadBytes(int.MaxValue);
        br.Close();
}

编辑:

处理内存不足的异常,并在this answer或简单设置br.ReadBytes(stream.Length);的帮助下读取文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54001247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档