我有一张我从网络摄像头拍摄的照片。我需要提供缩放此图像的幻觉。
由于网络摄像头没有光学变焦,我通过裁剪图像来做到这一点。
这一切都很棒。
但是在裁剪完图像后,我会在图像顶部添加一些日期戳和品牌图像。
问题:如果我裁剪了图像,则生成的文字和品牌标记水印显得非常大。 (品牌形象几乎覆盖了图像的水平空间的一半。)
如果我没有裁剪图像,那么它们会显示正常大小。 (品牌图像占图像水平尺寸的1/16左右。)
这是(当然)因为裁剪的图像较小,但品牌图像的大小保持不变。 有没有办法裁剪图像,以便生成的图像具有相同的“尺寸”(如上所述)?
我宁愿不必动态调整水印的大小。
我尝试了什么:
bitmap.Clone
Graphics.FromImage
和Graphics.DrawImage
bitmap.SetResolution
代码:
public static Bitmap CropAtRect(Bitmap bitmap, Rectangle rect)
{
Bitmap croppedBitmap = bitmap.Clone(rect, bitmap.PixelFormat);
croppedBitmap.SetResolution(bitmap.HorizontalResolution,bitmap.VerticalResolution);
return croppedBitmap;
}
private Bitmap BrandImage(Bitmap bitmapImage)
{
waterMarker = new WaterMarker();
Bitmap brandedImage = waterMarker.BrandImage(bitmapImage, DateTime.Now.ToString());
return brandedImage;
}
WaterMarker来自此CodeProject:
http://www.codeproject.com/Articles/2927/Creating-a-Watermarked-Photograph-with-GDI-for-NET
答案 0 :(得分:1)
你错过了一步。添加"比例"进入那里。
而不是 裁剪 - >品牌裁剪 - >缩放(调整大小恢复原始大小) - >品牌
这是关于如何在C#中缩放图像的堆栈溢出。 Resize image proportionally with MaxHeight and MaxWidth constraints