调整大小后的图像左侧有一条变色线
Image after resize has a discolored line on the left side
我正在尝试使用 SixLabors.ImageSharp(版本 1.0.0-beta0007)在 .NET Core C# 应用程序中将图像调整为缩略图。我注意到只有某些图像,调整后的图像有白色、红色或蓝色的扭曲边框,如下所示:
我生成缩略图的代码如下:
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),这是我能注意到的唯一相似之处,因为我是图像处理的新手。我也玩过调整大小模式和不同的重采样器,但无法解决这个问题。
导致此问题的原因是什么?有什么方法可以使用 SixLabors.ImageSharp 库来解决这个问题吗?
在我修改代码以从字节数组而不是流加载 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));
...
}
我正在尝试使用 SixLabors.ImageSharp(版本 1.0.0-beta0007)在 .NET Core C# 应用程序中将图像调整为缩略图。我注意到只有某些图像,调整后的图像有白色、红色或蓝色的扭曲边框,如下所示:
我生成缩略图的代码如下:
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),这是我能注意到的唯一相似之处,因为我是图像处理的新手。我也玩过调整大小模式和不同的重采样器,但无法解决这个问题。
导致此问题的原因是什么?有什么方法可以使用 SixLabors.ImageSharp 库来解决这个问题吗?
在我修改代码以从字节数组而不是流加载 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));
...
}