C#:尝试向图像添加缩略图符号时结果不同
本文关键字:符号 略图 结果 添加 图像 | 更新日期: 2023-09-27 18:31:33
我在 ASP.NET 应用程序中自动调整图像大小,以便创建该图像的低分辨率缩略图。此代码工作正常。调整大小后,我正在尝试向该图像添加"缩略图符号",例如小放大镜或加号,但结果因图像大小而异。
请注意:原始图像仅调整为特定宽度,因此图像的高度不同。
我的代码如下所示:
private static byte[] InsertThumbnailSign(byte[] imageBuffer, string signPath)
{
byte[] output = null;
MemoryStream stream = new MemoryStream(imageBuffer);
Image image = Image.FromStream(stream);
// Add the thumbnail-sign
Image thumbNailSign = Image.FromFile(signPath);
Graphics graphic = Graphics.FromImage(image);
graphic.DrawImageUnscaled(thumbNailSign, image.Width - thumbNailSign.Width - 4, image.Height - thumbNailSign.Height - 4);
graphic.Flush();
MemoryStream memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Jpeg);
output = new byte[memoryStream.Length];
memoryStream.Position = 0;
memoryStream.Read(output, 0, (int)memoryStream.Length);
memoryStream.Close();
stream.Dispose();
graphic.Dispose();
memoryStream.Dispose();
return output;
}
在我看来,缩略图标志应该具有恒定的大小,但事实并非如此。您有什么想法如何实现这一目标吗?
编辑:刚刚编辑了代码以了解不同的分辨率。但它仍然不起作用:
private static byte[] InsertThumbnailSign(byte[] imageBuffer, string signPath)
{
byte[] output = null;
MemoryStream stream = new MemoryStream(imageBuffer);
Image image = Image.FromStream(stream);
// Add the thumbnail sign with resolution of the containing image
Bitmap t = (Bitmap)Bitmap.FromFile(signPath);
t.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Image thumbNailSign = t;
Graphics graphic = Graphics.FromImage(image);
graphic.DrawImageUnscaled(thumbNailSign, image.Width - thumbNailSign.Width - 4, image.Height - thumbNailSign.Height - 4);
graphic.Flush();
MemoryStream memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Png);
output = new byte[memoryStream.Length];
memoryStream.Position = 0;
memoryStream.Read(output, 0, (int)memoryStream.Length);
memoryStream.Close();
stream.Dispose();
graphic.Dispose();
memoryStream.Dispose();
return output;
}
在调整大小和/或在创建要叠加的"符号"图像时使用该 DPI 之前,请确保将所有图像标准化为一致的 DPI/PPI。
300 DPI 2" 宽的图像为 600 像素宽,如果 DPI 设置为 72 DPI,您还可以拥有 600 像素宽的图像,并且宽度超过 8 英寸。
请参阅此问题,其中包含与示例代码的链接,以获取有关图形对象的更多详细信息。
TombMedia是对的。决议一直是重点。
我在调整大小算法中发现了一个错误,该错误导致 Firefox 调整图像大小并导致插入图像的大小不同。
修复该错误并调整分辨率后,它可以正常工作。感谢您的提示!