我尝试解释:我有一个JPG图像(img A)。
这个A.jpg有内容 - 颜色,它是人物的图片 - 还有一个小的白色矩形(颜色为白色;人的头部是白色矩形)。我需要在A.jpg中获得矩形的位置。
然后,我有另一个B.jpg图像,更少;并且我将生成B.jpg的缩略图,具有矩形尺寸(A.jpg中的白色矩形)。
最后,我将生成新的图像:C.jpg,将A.jpg和A.jpg放在A.jpg的矩形中。
任何建议,任何示例代码?我使用vs 2008,.net 3.5,仅限GDI +。
答案 0 :(得分:2)
对于A问题,您可以计算每列和每行中的白色像素数。具有最高白色像素数的列/行是矩形的边框所在的位置。 (假设矩形边与图像的边平行)
对于B和C,提示是从
开始Bitmap aImage; // Initialize with your images
using (Graphics g = Graphics.FromImage(aImage))
{
// Do stuff
}
然后你可以找到并重载Graphics.DrawImage来缩放和绘制你的图像。
要计算像素数,可以使用GetPixel方法。
// Sketchy code
// Calculate each column in sum[x]
[x,y] = b.Size;
for(x ...)
for(y ..)
if (aImage.GetPixel(x, y) == Color.White)
sum[x]++;
答案 1 :(得分:1)
以下是将图像放在另一张图像上的代码段。 (没有学分i took it from here)
Bitmap bmp = Bitmap.FromFile(initialFileName);
// This draws another image as an overlay on top of bmp in memory.
// There are additional forms of DrawImage; there are ways to fully specify the
// source and destination rectangles. Here, we just draw the overlay at position (0,0).
using (Graphics g = Graphics.FromImage(bmp))
{
g.DrawImage(Bitmap.FromFile(overlayFileName), 0, 0);
}
bmp.Save(saveAsFileName, System.Drawing.Imaging.ImageFormat.Png);
现在介绍如何在图像中找到一个大的白色矩形?这一点有点棘手。