gpt4 book ai didi

c# - Graphics.DrawImage Logo 在大图像上缩放不正确

转载 作者:太空狗 更新时间:2023-10-30 00:29:16 33 4
gpt4 key购买 nike

我正在做一些标准代码,我正在将 Logo 应用到图像上,它工作正常。

源图像始终为 1024 x 768,因为在此之前的代码会获取图像并调整其大小(基于原始文件创建新文件)。

Logo 已正确应用到我拥有的一些 2288 x 1712 图像上。如果我使用 3264 x 2448 图像,则 Logo 会添加到正确的起始坐标,但沿 x 轴和 y 轴延伸。

Logo 两侧之间应留有 10 像素的间距。您可以看到 Logo 中的 2 个字母也比源图像 Logo 大得多。

alt text

如果我将出现错误行为的图像 (3264 x 2448) 更改为 2288 x 1712,然后运行代码,它会输出正确的结果!

我不明白,因为变量 sourceImg 始终是 1024 x 768 版本,所以为什么调整原始图像的大小会产生影响?

Image sourceImg = Image.FromFile(Path.Combine(filepath,filename));
Image logo = Image.FromFile(watermark);

Graphics g = Graphics.FromImage(sourceImg);
g.DrawImage(
logo,
sourceImg.Width - horizontalPosition - logo.Width,
sourceImg.Height - verticalPosition - logo.Height
);
g.Dispose();
logo.Dispose();

sourceImg.Save(Path.Combine(filepath, filename));
sourceImg.Dispose();

最佳答案

您正在使用的 DrawImage 的重载采用图像的 PPI 值来计算大小。由于 Logo 的 PPI 值低于图像的 PPI 值,因此 Logo 按比例放大,因此它们的相对物理尺寸(英寸而不是像素)相同。

在以像素为单位指定大小的地方使用重载:

g.DrawImage(
logo,
sourceImg.Width - horizontalPosition - logo.Width,
sourceImg.Height - verticalPosition - logo.Height,
logo.Width,
logo.Height
);

关于c# - Graphics.DrawImage Logo 在大图像上缩放不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878596/

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