我尝试从原始图像创建缩略图,以便在我的asp.net MVC应用程序中使用。
使用下面的代码,我可以执行任务,但结果不够清楚。
我的问题是,是否有更好的方法可以做到这一点,并且是否有可能使结果与图像上的预期结果一样清晰。
这是我的代码:
var tracedPath = @"C:\Users\co\Desktop\traced.png";
var targetPath = @"C:\Users\co\Desktop\thumbnail.png";
Bitmap bmpSource = new Bitmap(tracedPath);
Bitmap bmpTarget = new Bitmap(224, 210);
var width = 85;
var height = 210;
var bmpResizedSource = new Bitmap(bmpSource, width, height);
using (Graphics grD = Graphics.FromImage(bmpTarget))
{
grD.DrawImage(bmpResizedSource, new RectangleF((224 - 75) / 2, 5, 75, 200), new RectangleF(0, 0, 85, 210), GraphicsUnit.Pixel);
}
bmpTarget.Save(targetPath);
Color pixel = Color.Transparent;
for (int x = 0; x < 224; x++)
{
for (int y = 0; y < 210; y++)
{
pixel = bmpTarget.GetPixel(x, y);
if (pixel.A > 0)
{
bmpTarget.SetPixel(x, y, Color.Black);
}
}
}
bmpTarget.Save(targetPath);
答案 0 :(得分:2)
不确定这是否能帮助您解决问题,但是由于我需要添加图片,因此必须将其发布为答案...
在一般情况下,您的问题的答案非常取决于图像内容。如果您总是要进行黑白素描,这将有所帮助:
重新缩放图像,对其应用较小的半径高斯,并增加其对比度/降低其透明度,结果如下所示。您可以通过更改高斯滤镜的半径来改变线宽。请注意,高调会导致您的图像完全消失
*还请考虑是否不能使用路径而不是图像来显示这样的形状
答案 1 :(得分:1)
这是主要来自this post
的函数character
应用一次的结果:
您可以更频繁地应用它,并且在第二次迭代中使用对比度> 1.。
说明:我首先缩放原始图像,从而产生一点模糊(抗锯齿)。然后,通过应用较大的伽玛值使所有灰色像素变暗,并最终恢复原始尺寸。这与Denis的帖子基本上是相同的想法,但是在工作的GDI +代码中。