chr*_*702 2 c# watermark image-processing
我想在我的C#程序中合并两张图片.第一个是灰度模式下的任何图片,第二个是这张图片中的图片:
两张图片/图片都有相同的大小,这是我的代码:
Bitmap first = new Bitmap (picturebox1.image);
Bitmap second = new Bitmap (picturebox2.image);
Bitmap result = new Bitmap (first.width, first.height);
Graphics g = Graphics.FromImage(result);
g.DrawImageUnscaled(first, 0, 0);
g.Flush();
g.DrawImageUnscaled(second, 0, 0);
g.Flush();
picturebox3.image = result;
Run Code Online (Sandbox Code Playgroud)
我可以加入这些图片,但结果的尺寸小于两张原件(两张图片尺寸相同).有人能给我一些建议吗?
另外,我想结果图片有这样的条件: 如果第二张图片中的边缘像素落到第一张照片的亮边,它会变暗,否则当边缘掉到黑暗面时,它会很亮(看起来很棒)辉光).所以文字将是半透明的.
这是我想要的结果的一个例子.

请问有人可以提出一些建议吗?
这是为了加入
Bitmap first = new Bitmap (picturebox1.Image);
Bitmap second = new Bitmap (picturebox2.Image);
Bitmap result = new Bitmap (first.Width+first.Width, first.Height);
Graphics g = Graphics.FromImage(result);
g.DrawImageUnscaled(first, 0, 0);
g.DrawImageUnscaled(second,first.Width, 0);
Run Code Online (Sandbox Code Playgroud)
尝试将其合并为另一个.自己设置alpha(红色:如果你不想要alpha,你可以使用BitMap.MakeTransParent)
public Bitmap SetImageOpacity(Image image, float opacity)
{
try
{
//create a Bitmap the size of the image provided
Bitmap bmp = new Bitmap(image.Width, image.Height);
//create a graphics object from the image
using (Graphics gfx = Graphics.FromImage(bmp))
{
//create a color matrix object
ColorMatrix matrix = new ColorMatrix();
//set the opacity
matrix.Matrix33 = opacity;
//create image attributes
ImageAttributes attributes = new ImageAttributes();
//set the color(opacity) of the image
attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
//now draw the image
gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes);
}
return bmp;
}
catch (Exception ex)
{
return null;
}
}
private void button1_Click(object sender, EventArgs e)
{
Bitmap first = new Bitmap(pictureBox1.Image);
Bitmap second = SetImageOpacity(pictureBox2.Image, 0.5f);
//Bitmap result = new Bitmap(first.Width, first.Height);
//fix :
Bitmap result = new Bitmap(Math.Max(first.Width,second.Width), Math.Max(first.Height,second.Height));
Console.WriteLine(first.Width);
Graphics g = Graphics.FromImage(result);
g.DrawImageUnscaled(first, 0, 0);
g.DrawImageUnscaled(second, 0, 0);
pictureBox3.Image = result;
result.Save("result.jpg" );
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且为了水印你为什么不想在这里使用带有alpha的Drawstring是所有这些的文章http://www.codeproject.com/Articles/5034/How-to-implement-Alpha-blending