public static void SaveJpeg(Image img, Stream stream, FreeImageJpegQualityType freeImageJpegQualityType, FreeImageJpegSubSamplingType freeImageJpegSubSamplingType) { using (FreeImageAPI.FreeImageBitmap fib = new FreeImageAPI.FreeImageBitmap(img)) { FREE_IMAGE_SAVE_FLAGS jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB; FREE_IMAGE_SAVE_FLAGS jpgSubSampling = FREE_IMAGE_SAVE_FLAGS.JPEG_SUBSAMPLING_444; switch (freeImageJpegQualityType) { case FreeImageJpegQualityType.JPEG_QUALITYAVERAGE: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYAVERAGE; break; case FreeImageJpegQualityType.JPEG_QUALITYBAD: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYBAD; break; case FreeImageJpegQualityType.JPEG_QUALITYGOOD: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYGOOD; break; case FreeImageJpegQualityType.JPEG_QUALITYNORMAL: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYNORMAL; break; case FreeImageJpegQualityType.JPEG_QUALITYSUPERB: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB; break; case FreeImageJpegQualityType.JPEG_PROGRESSIVE_QUALITYAVERAGE: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_PROGRESSIVE | FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYAVERAGE; break; case FreeImageJpegQualityType.JPEG_PROGRESSIVE_QUALITYBAD: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_PROGRESSIVE | FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYBAD; break; case FreeImageJpegQualityType.JPEG_PROGRESSIVE_QUALITYGOOD: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_PROGRESSIVE | FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYGOOD; break; case FreeImageJpegQualityType.JPEG_PROGRESSIVE_QUALITYNORMAL: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_PROGRESSIVE | FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYNORMAL; break; case FreeImageJpegQualityType.JPEG_PROGRESSIVE_QUALITYSUPERB: jpgQuality = FREE_IMAGE_SAVE_FLAGS.JPEG_PROGRESSIVE | FREE_IMAGE_SAVE_FLAGS.JPEG_QUALITYSUPERB; break; } switch (freeImageJpegSubSamplingType) { case FreeImageJpegSubSamplingType.JPEG_SUBSAMPLING_411: jpgSubSampling = FREE_IMAGE_SAVE_FLAGS.JPEG_SUBSAMPLING_411; break; case FreeImageJpegSubSamplingType.JPEG_SUBSAMPLING_420: jpgSubSampling = FREE_IMAGE_SAVE_FLAGS.JPEG_SUBSAMPLING_420; break; case FreeImageJpegSubSamplingType.JPEG_SUBSAMPLING_422: jpgSubSampling = FREE_IMAGE_SAVE_FLAGS.JPEG_SUBSAMPLING_422; break; case FreeImageJpegSubSamplingType.JPEG_SUBSAMPLING_444: jpgSubSampling = FREE_IMAGE_SAVE_FLAGS.JPEG_SUBSAMPLING_444; break; } fib.Save(stream, FreeImageAPI.FREE_IMAGE_FORMAT.FIF_JPEG, jpgQuality | jpgSubSampling); } }