裁剪一个位图,然后得到相同的 "Size" 图像
Crop a Bitmap and have the same "Size" image afterward
我有一张从网络摄像头拍摄的图像。我需要提供放大此图像的错觉。
由于网络摄像头没有光学变焦,我通过裁剪图像来做到这一点。
这一切都很好。
但是在裁剪图像后,我在图像顶部添加了一些日期戳和品牌图像水印。
问题: 如果我裁剪了图像,则生成的文本和品牌水印会显得非常大。 (品牌形象几乎覆盖了图像水平 space 的一半。)
如果我没有裁剪图像,它们将显示为正常大小。 (品牌形象占图像水平尺寸的 1/16 左右。)
这(当然)是因为裁剪后的图像较小,但品牌图像保持相同大小。
有没有办法裁剪图像以使生成的图像相同"size"(如上所述)?
我宁愿不必动态调整水印的大小。
我试过的:
- How can I crop image without changing its resolution in C#.Net?
- 这使用
bitmap.Clone
- How to crop an image using C#?
- 它有几个裁剪选项:
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
你少了一步。将 "Scale" 添加到那里。
而不是
作物 -> 品牌
裁剪 -> 缩放(调整回原始大小)-> 品牌
这是关于如何在 C# 中缩放图像的堆栈溢出。
Resize image proportionally with MaxHeight and MaxWidth constraints
我有一张从网络摄像头拍摄的图像。我需要提供放大此图像的错觉。
由于网络摄像头没有光学变焦,我通过裁剪图像来做到这一点。
这一切都很好。
但是在裁剪图像后,我在图像顶部添加了一些日期戳和品牌图像水印。
问题: 如果我裁剪了图像,则生成的文本和品牌水印会显得非常大。 (品牌形象几乎覆盖了图像水平 space 的一半。)
如果我没有裁剪图像,它们将显示为正常大小。 (品牌形象占图像水平尺寸的 1/16 左右。)
这(当然)是因为裁剪后的图像较小,但品牌图像保持相同大小。 有没有办法裁剪图像以使生成的图像相同"size"(如上所述)?
我宁愿不必动态调整水印的大小。
我试过的:
- How can I crop image without changing its resolution in C#.Net?
- 这使用
bitmap.Clone
- 这使用
- How to crop an image using C#?
- 它有几个裁剪选项:
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
你少了一步。将 "Scale" 添加到那里。
而不是 作物 -> 品牌
裁剪 -> 缩放(调整回原始大小)-> 品牌
这是关于如何在 C# 中缩放图像的堆栈溢出。 Resize image proportionally with MaxHeight and MaxWidth constraints