获取图像JPG的矩形并生成矩形缩略图

时间:2010-08-19 20:01:31

标签: .net image-processing position thumbnails

我尝试解释:我有一个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 +。

2 个答案:

答案 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);

现在介绍如何在图像中找到一个大的白色矩形?这一点有点棘手。

有一个library which can do this for you