The imagem compression follow another objects and features that different of trivial files; image compreession has properties to equalize the compression. Like code bellow, the compression act on Quality property:
static byte[] CompressByImageAlg(int jpegQuality, byte[] data)
{
using (MemoryStream inputStream = new MemoryStream(data))
{
using (Image image = Image.FromStream(inputStream))
{
ImageCodecInfo jpegEncoder = ImageCodecInfo.GetImageDecoders()
.First(c => c.FormatID == ImageFormat.Jpeg.Guid);
var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, jpegQuality);
byte[] outputBytes = null;
using (MemoryStream outputStream = new MemoryStream())
{
image.Save(outputStream, jpegEncoder, encoderParameters);
return outputStream.ToArray();
}
}
}
}