If I change the Compression to any value besides EncoderValue.CompressionLZW I get an error 'parameter is not valid.

Solution for the  Error :

using System;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.IO;using System.Windows.Forms;using System.Runtime.InteropServices;using System.Diagnostics;namespace
{
ImageCalcclass Resize{







{
Encoder imEncode;EncoderParameter myEncoderParameter;EncoderParameters myEncoderParameters;ImageCodecInfo myImageCodecInfo;Image simage;Image Nimage;public void Resizer(String Path, String workset)try{
imEncode =
Encoder.Compression;// myEncoderParameters = new EncoderParameters(1);myEncoderParameters =


{

new EncoderParameters(3);string[] im = Directory.GetFiles(Path, "*.0*", SearchOption.AllDirectories);for (int i = 0; i < im.Length; i++)Image image = new Bitmap(im[i]);// myEncoderParameter = new EncoderParameter(imEncode, Convert.ToByte((long)EncoderValue.CompressionCCITT4));myEncoderParameter =
myEncoderParameter =
myEncoderParameter =

ms.GetBuffer();
myEncoderParameters.Param[0] = myEncoderParameter;
myEncoderParameters.Param[1] = myEncoderParameter;
myEncoderParameters.Param[2] = myEncoderParameter;
new EncoderParameter(imEncode, Convert.ToInt64(EncoderValue.CompressionCCITT4)); new EncoderParameter(Encoder.ColorDepth,1);new EncoderParameter(Encoder.SaveFlag, Convert.ToInt64(EncoderValue.MultiFrame)); MemoryStream ms = new MemoryStream();//EncoderParameters ep = new EncoderParameters(3);//ep.Param[0] = new EncoderParameter(Encoder.SaveFlag, Convert.ToInt64(EncoderValue.MultiFrame));//ep.Param[1] = new EncoderParameter(Encoder.Compression, Convert.ToInt64(EncoderValue.CompressionCCITT4));//ep.Param[2] = new EncoderParameter(Encoder.ColorDepth, 1);
//return ep;// myImageCodecInfo = GetEncoderInfo("image/tiff");//myImageCodecInfo = FindEncoder(ImageFormat.Png);myImageCodecInfo = FindEncoder(

{
simage = CreateReducedImage(image,
}
ImageFormat.Tiff);if (image.Width > 1600 || image.Height > 2000)new Size(1800, 2200));else
{
simage = CreateReducedImage(image,
}

if (image.Width > 2000 || image.Height > 1600)new Size(2200, 1800));File.Move(im[i].ToString(), im[i].ToString() + "_BAK");// Save the bitmap as a TIFF file with group IV compression.simage.Save(im[i].ToString(), myImageCodecInfo, myEncoderParameters);
// simage.Save(im[i].ToString());image.Dispose();
simage.Dispose();
}
}

{

}
}


{



{
img.Save(retStream,
retStream.Flush();
}
retVal =

}

{



{

{
tiffCodec = codec;

}
}
catch (Exception ex)MessageBox.Show(ex.Message, "Image Resizer Information", MessageBoxButtons.OK, MessageBoxIcon.Information);public static Image ConvertToTiff(Stream imgStream)Image retVal = null;Stream retStream = new MemoryStream();using (Image img = Image.FromStream(imgStream, true, true))ImageFormat.Tiff);Image.FromStream(retStream, true, true);return retVal;public void convertor(String Path)ImageCodecInfo tiffCodec = null;ImageCodecInfo[] Encoders = ImageCodecInfo.GetImageEncoders();foreach (ImageCodecInfo codec in Encoders)if (codec.MimeType == "image/tiff")break;// Can't find the TIFF encoder
if (tiffCodec == null) return;// Set encoder to use no compression
ep.Param[0] =
(
EncoderParameters ep = new EncoderParameters();new EncoderParameter(Encoder.Compression,long)EncoderValue.CompressionNone);// Load a new image


Bitmap TempImg = new Bitmap(Path);string[] im = Directory.GetFiles(Path, "*.0*", SearchOption.AllDirectories);try{ // Attempt to save the imageTempImg.Save(im.ToString(), tiffCodec, ep);
}

{

}
TempImg.Dispose();
catch (Exception ex)MessageBox.Show("Error saving image: " + ex.Message);// Clean upep.Dispose();


}


{
private ImageCodecInfo GetEncoderInfo(String mimeType)try{


encoders =

{


}
}

{

}

}


{

int j;ImageCodecInfo[] encoders;ImageCodecInfo.GetImageEncoders();for (j = 0; j < encoders.Length; ++j)if (encoders[j].MimeType == mimeType)return encoders[j];catch (Exception ex)MessageBox.Show(ex.Message, "Image Resizer Information", MessageBoxButtons.OK, MessageBoxIcon.Information);return null;private Image Createimage(Image imgOrig)// Bitmap newBM = new Bitmap(NewSize.Width, NewSize.Height, PixelFormat.Format32bppPArgb);
newBM.SetResolution(imgOrig.HorizontalResolution, imgOrig.VerticalResolution);

{
newGrapics.CompositingQuality =
newGrapics.SmoothingMode =
newGrapics.InterpolationMode =
newGrapics.DrawImage(imgOrig,
imgOrig.Dispose();
newGrapics.Dispose();
}

}

{



{

{

}
}
}


{
Bitmap newBM = new Bitmap(0,0, PixelFormat.Format32bppArgb);using (var newGrapics = Graphics.FromImage(newBM))CompositingQuality.HighSpeed;SmoothingMode.HighSpeed;InterpolationMode.HighQualityBicubic;new Rectangle(0, 0,0,0), 0, 0, 0,0, GraphicsUnit.Pixel);return newBM; public static ImageCodecInfo FindEncoder(ImageFormat format)if (format == null) throw new ArgumentNullException("format"); foreach (ImageCodecInfo codec in ImageCodecInfo.GetImageEncoders())if (codec.FormatID.Equals(format.Guid))return codec; return null;private Image CreateReducedImage(Image imgOrig, Size NewSize)try{
// Bitmap newBM = new Bitmap(NewSize.Width, NewSize.Height, PixelFormat.Format32bppPArgb);

newBM.SetResolution(imgOrig.HorizontalResolution, imgOrig.VerticalResolution);

{
newGrapics.CompositingQuality =
newGrapics.SmoothingMode =
newGrapics.InterpolationMode =
newGrapics.DrawImage(imgOrig,
imgOrig.Dispose();
newGrapics.Dispose();
}
Bitmap newBM = new Bitmap(NewSize.Width, NewSize.Height, PixelFormat.Format32bppArgb);using (var newGrapics = Graphics.FromImage(newBM))CompositingQuality.HighSpeed;SmoothingMode.HighSpeed;InterpolationMode.HighQualityBicubic;new Rectangle(0, 0, NewSize.Width, NewSize.Height), 0, 0, NewSize.Width, NewSize.Height, GraphicsUnit.Pixel);// Lock source bitmap in memory
BitmapData sourceData = newBM.LockBits(new Rectangle(0, 0, newBM.Width, newBM.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);// Copy image data to binary array


int imageSize = sourceData.Stride * sourceData.Height;byte[] sourceBuffer = new byte[imageSize];Marshal.Copy(sourceData.Scan0, sourceBuffer, 0, imageSize);// Unlock source bitmapnewBM.UnlockBits(sourceData);
// Create destination bitmap
Bitmap destination = new Bitmap(newBM.Width, newBM.Height, PixelFormat.Format1bppIndexed);//Add to destination DPI value from the original bitmap DPI Valuedestination.SetResolution(newBM.HorizontalResolution, newBM.VerticalResolution);
// Lock destination bitmap in memory
BitmapData destinationData = destination.LockBits(new Rectangle(0, 0, destination.Width, destination.Height), ImageLockMode.WriteOnly, PixelFormat.Format1bppIndexed);// Create destination bufferimageSize = destinationData.Stride * destinationData.Height;










byte[] destinationBuffer = new byte[imageSize];int sourceIndex = 0;int destinationIndex = 0;int pixelTotal = 0;byte destinationValue = 0;int pixelValue = 128;int height = newBM.Height;int width = newBM.Width;int threshold = 500;// Iterate lines




{
sourceIndex = y * sourceData.Stride;
destinationIndex = y * destinationData.Stride;
destinationValue = 0;
pixelValue = 128;
for (int y = 0; y < height; y++)// Iterate pixels
{
for (int x = 0; x < width; x++)// Compute pixel brightness (i.e. total of Red, Green, and Blue values)pixelTotal = sourceBuffer[sourceIndex + 1] + sourceBuffer[sourceIndex + 2] + sourceBuffer[sourceIndex + 3];

{
destinationValue += (
}

{
destinationBuffer[destinationIndex] = destinationValue;
destinationIndex++;
destinationValue = 0;
pixelValue = 128;
}
if (pixelTotal > threshold)byte)pixelValue;if (pixelValue == 1)else{
pixelValue >>= 1;
}
sourceIndex += 4;
}

{
destinationBuffer[destinationIndex] = destinationValue;
}
}
if (pixelValue != 128)// Copy binary image data to destination bitmap
Marshal.Copy(destinationBuffer, 0, destinationData.Scan0, imageSize);// Unlock destination bitmapdestination.UnlockBits(destinationData);
// blacknwhite(newBM);// return newBM;
}

{

}
}
return destination;catch (Exception ex)throw ex;

Comments