调整大小后的图像左侧有一条变色线。

问题描述 投票:0回答:1

我试图使用SixLabors.ImageSharp(版本1.0.0-beta0007)在.NET Core C#应用程序中调整图像大小为缩略图。我注意到,只有对某些图像,调整后的图像有一个白色、红色或蓝色的扭曲边界,就像这样。

enter image description here

enter image description here

我生成缩略图的代码如下:

        using (var imageToResize = Image.Load(inStream, out IImageFormat imageFormat))
        {
            var size = GetThumbnailSize(imageToResize.Size()); //max size 150,preserves aspect-ratio 
            imageToResize.Mutate(x => x.Resize(new ResizeOptions()
            {
                Size = size,
                Mode = ResizeMode.Crop
            }));

            using (var memorystream = new MemoryStream())
            {
                imageToResize.Save(memorystream , imageFormat);
                ms.Position = 0;
                outputStream.UploadFromStreamAsync(memorystream);
            }
        }

这两张图片是在同一台设备上拍摄的 两张图片都有相同的尺寸(3024x4032) 这是我唯一能注意到的相似之处,因为我是个图像处理新手。我也玩过调整大小模式和不同的Resamplers,但无法解决这个问题。

是什么原因导致这个问题?有没有办法用SixLabors.ImageSharp库来解决这个问题?

c# image-processing .net-core image-resizing imagesharp
1个回答
0
投票

在我修改了代码,从一个字节数组而不是流加载ImageSharp图像后,这个问题得到了解决。根据 @JamesSouth 对上面问题的评论,可能是我的输入流没有提供所有的字节。

以下是更新后的代码。

   // convert inStream to a byte array "bytes"

    using (var imageToResize = Image.Load(bytes, out IImageFormat imageFormat))
    {
        Size newSize = GetThumbnailSize(imageToResize.Size()); //max size 150, preserves aspect-ratio 
        imageToResize.Mutate(x => x.Resize(newSize));

        ...
    }
© www.soinside.com 2019 - 2024. All rights reserved.