libreria - Combine dos imágenes para crear una sola imagen en C#.Net
opencv vb net (5)
Descargo de responsabilidad: trabajo en Atalasoft
Nuestro DotImage Photo SDK (que es gratuito) puede hacer esto.
Para abrir una imagen
AtalaImage botImage = new AtalaImage("bottomImage.png");
AtalaImage topImage = new AtalaImage("topImage.png");
Para superponer uno encima del otro
Point pos = new Point(0,0); // or whatever you need
OverlayCommand cmd = new OverlayCommand(topImage, pos);
ImageResults res = cmd.Apply(botImage);
Si necesita que la imagen resultante tenga un tamaño diferente, mire el CanvasCommand
. También puede crear una Imagen de Atala del tamaño que necesita y luego superponer cada imagen en ella.
Ahorrar
botImage.Save("newImage.png", new PngEncoder(), null);
Tengo un requisito en el que necesito combinar dos imágenes png / jpeg diferentes que resulten en una sola imagen usando C # .Net. Habrá una ubicación particular definida en la imagen de origen en la que necesito insertar otra imagen. ¿Alguien puede sugerir algunos enlaces?
Después de todo esto, encontré un nuevo método más fácil, intente esto ...
Puede unir múltiples fotos juntas:
public static System.Drawing.Bitmap CombineBitmap(string[] files)
{
//read all images into memory
List<System.Drawing.Bitmap> images = new List<System.Drawing.Bitmap>();
System.Drawing.Bitmap finalImage = null;
try
{
int width = 0;
int height = 0;
foreach (string image in files)
{
//create a Bitmap from the file and add it to the list
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(image);
//update the size of the final bitmap
width += bitmap.Width;
height = bitmap.Height > height ? bitmap.Height : height;
images.Add(bitmap);
}
//create a bitmap to hold the combined image
finalImage = new System.Drawing.Bitmap(width, height);
//get a graphics object from the image so we can draw on it
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(finalImage))
{
//set background color
g.Clear(System.Drawing.Color.Black);
//go through each image and draw it on the final image
int offset = 0;
foreach (System.Drawing.Bitmap image in images)
{
g.DrawImage(image,
new System.Drawing.Rectangle(offset, 0, image.Width, image.Height));
offset += image.Width;
}
}
return finalImage;
}
catch (Exception)
{
if (finalImage != null)
finalImage.Dispose();
//throw ex;
throw;
}
finally
{
//clean up memory
foreach (System.Drawing.Bitmap image in images)
{
image.Dispose();
}
}
}
Este método combina dos imágenes, una en la parte superior de la otra, puede modificar el código para satisfacer sus necesidades:
public static Bitmap MergeTwoImages(Image firstImage, Image secondImage)
{
if (firstImage == null)
{
throw new ArgumentNullException("firstImage");
}
if (secondImage == null)
{
throw new ArgumentNullException("secondImage");
}
int outputImageWidth = firstImage.Width > secondImage.Width ? firstImage.Width : secondImage.Width;
int outputImageHeight = firstImage.Height + secondImage.Height + 1;
Bitmap outputImage = new Bitmap(outputImageWidth, outputImageHeight, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
using (Graphics graphics = Graphics.FromImage(outputImage))
{
graphics.DrawImage(firstImage, new Rectangle(new Point(), firstImage.Size),
new Rectangle(new Point(), firstImage.Size), GraphicsUnit.Pixel);
graphics.DrawImage(secondImage, new Rectangle(new Point(0, firstImage.Height + 1), secondImage.Size),
new Rectangle(new Point(), secondImage.Size), GraphicsUnit.Pixel);
}
return outputImage;
}
Tengo una API para eso en http://bookingbillboard.com/API . Este api combinará 2 imágenes. 1 imagen es su imagen / diseño / póster, y otras imágenes es foto de cartelera. Al usar API, puedes ver cómo se ve tu diseño / imágenes / póster en la foto de la cartelera
String jpg1 = @"c:/images.jpeg";
String jpg2 = @"c:/images2.jpeg";
String jpg3 = @"c:/image3.jpg";
Image img1 = Image.FromFile(jpg1);
Image img2 = Image.FromFile(jpg2);
int width = img1.Width + img2.Width;
int height = Math.Max(img1.Height, img2.Height);
Bitmap img3 = new Bitmap(width, height);
Graphics g = Graphics.FromImage(img3);
g.Clear(Color.Black);
g.DrawImage(img1, new Point(0, 0));
g.DrawImage(img2, new Point(img1.Width, 0));
g.Dispose();
img1.Dispose();
img2.Dispose();
img3.Save(jpg3, System.Drawing.Imaging.ImageFormat.Jpeg);
img3.Dispose();