Hi techie,
I am developing a .NET windows application, for managing scanning documents.
In my project I am converting the scanned images into tiff file by using
System.Drawing.Imaging.Save
(or)
SaveAdd
methods.
It is working fine, when I am converting 10-15 images into single tiff file. If I convert more images into tiff file, my code is triggering these exception "
Parameter is not valid" or "
Out of memory".
I have totally tried all the debugging last one week, sometimes my code is running perfect, but most of the times its throwing the error.
I have followed the below reference code by codeproject.com:
Save images into a multi-page TIFF file or add images to an existing TIFF file[
^]
Below the code for convert images into tiff:
public bool saveMultipage(Image[] bmp, string location, string type)
{
if (bmp != null)
{
try
{
ImageCodecInfo codecInfo = getCodecForstring(type);
for (int i = 0; i < bmp.Length; i++)
{
if (bmp[i] == null)
break;
bmp[i] = (Image)ConvertToBitonal((Bitmap)bmp[i]);
}
if (bmp.Length == 1)
{
EncoderParameters iparams = new EncoderParameters(1);
Encoder iparam = Encoder.Compression;
EncoderParameter iparamPara = new EncoderParameter(iparam, (long)(EncoderValue.CompressionCCITT4));
iparams.Param[0] = iparamPara;
bmp[0].Save(location, codecInfo, iparams);
}
else if (bmp.Length > 1)
{
Encoder saveEncoder;
Encoder compressionEncoder;
EncoderParameter SaveEncodeParam;
EncoderParameter CompressionEncodeParam;
EncoderParameters EncoderParams = new EncoderParameters(2);
saveEncoder = Encoder.SaveFlag;
compressionEncoder = Encoder.Compression;
SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.MultiFrame);
CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
EncoderParams.Param[0] = CompressionEncodeParam;
EncoderParams.Param[1] = SaveEncodeParam;
File.Delete(location);
bmp[0].Save(location, codecInfo, EncoderParams);
for (int i = 1; i < bmp.Length; i++)
{
if (bmp[i] == null)
break;
SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.FrameDimensionPage);
CompressionEncodeParam = new EncoderParameter(compressionEncoder, (long)EncoderValue.CompressionCCITT4);
EncoderParams.Param[0] = CompressionEncodeParam;
EncoderParams.Param[1] = SaveEncodeParam;
bmp[0].SaveAdd(bmp[i], EncoderParams);
}
SaveEncodeParam = new EncoderParameter(saveEncoder, (long)EncoderValue.Flush);
EncoderParams.Param[0] = SaveEncodeParam;
bmp[0].SaveAdd(EncoderParams);
}
return true;
}
catch (System.Exception ee)
{
throw new Exception(ee.Message + " Error in saving as multipage ");
}
}
else
return false;
}
Kindly suggest me something regarding this issue, it will be helpful for me.
Thanks in advance developers.