Using C#, how would you convert var type variables to image type variables to pass to a function?

zimmer9
zimmer9 used Ask the Experts™
on
I am writing a C# console application that generates 2 files in binary format.

1 file is comprised of the front images of checks.

1 file is comprised of the back images of checks.

Do you know how I could modify this code (in particular the Function call) to merge these 2 TIFF files together into 1 TIFF file (called a multipage TIFF image)?

I want to give the user the ability to read the front image of a particular check image and then read the back image of the same check.

The img variable contains the front images of checks.
The img1 variable contains the back images of checks.
------------------

var img = bytes.Skip(irecpositionrevised + irectypelength).Take(intpos1revised).ToArray();

var img1 = bytes.Skip(irecpositionrevised + irectypelength + intpos1revised).Take(intpos2revised).ToArray();

MergeTwoImages(img, img1)  <--------  This will not work because the data type needs to be converted


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;
}
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Hi,

img and img1 are byte arrays. You can load a memory stream from these arrays and then use the static Image.FromStream to get an Image object.

You can have a method:

private Image ConvertFromByteArray(byte[] input)
{
    using (var ms = new MemoryStream(input))
    {
        return Image.FromStream(ms);
    }
}

Open in new window


and then you will use it as

MergeTwoImages(ConvertFromByteArray(img), ConvertFromByteArray(img1))

Open in new window


I have not tested this, but it is an idea,
Giannis
ste5anSenior Developer
Commented:
Don't use var.. I never did in production code..

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial