gpt4 book ai didi

c# - 为什么我的图像大小调整代码总是产生全黑的输出图像?

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:25 24 4
gpt4 key购买 nike

我正在尝试调整图像的大小。我认为这是一项简单的任务...

这是我的代码(注意,两个 Save 调用只是为了调试以说明问题):

    var newSize = new Size { Width = 450, Height = 250 };
using (var img = (Bitmap)Image.FromFile(sourceImageFilename))
{
var outputImage = new Bitmap(newSize.Width, newSize.Height);

// Save input image for debugging (screenshot below)
img.Save(@"M:\Coding\Photos\Temp\input.jpg");

using (Graphics gr = Graphics.FromImage(img))
{
gr.SmoothingMode = SmoothingMode.HighQuality;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(outputImage, new Rectangle(0, 0, newSize.Width, newSize.Height));
}

// Save output image for debugging (screenshot below)
outputImage.Save(@"M:\Coding\Photos\Temp\output.jpg");
}

这似乎与许多人正在使用的代码完全相同(并且在许多答案中都存在于 SO 上)。但是,这是写入磁盘的两个图像的样子:

Bad image resize

原始图像为 5344x3006,newSize(和黑色输出图像)为 450x250。

我的所有其他代码都工作正常(使用 SetPixel 等从输入图像读取像素),只是这个调整大小坏了。使用 Bitmap 构造函数调整大小没问题(但调整大小质量很差)。

最佳答案

您需要从 OutputImage 中获取图形。

public static Bitmap Scale(this Bitmap inputImage, Size newSize)
{
var outputImage = new Bitmap(newSize.Width, newSize.Height);

inputImage.Save(@"M:\Coding\Photos\Temp\input.jpg");
using (Graphics gr = Graphics.FromImage(outputImage))
{
gr.SmoothingMode = SmoothingMode.HighQuality;
gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = PixelOffsetMode.HighQuality;
gr.DrawImage(inputImage, new Rectangle(0, 0, newSize.Width, newSize.Height));
}
outputImage.Save(@"M:\Coding\Photos\Temp\output.jpg");

return outputImage;
}

关于c# - 为什么我的图像大小调整代码总是产生全黑的输出图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35366986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com