static Image * __mm_util_resize_image(Image *image, unsigned int width, unsigned int height)
{
Image *_processed_image = NULL;
+ Image *_sampled_image = NULL;
ExceptionInfo exception;
+ unsigned int check_factor = 3;
+ unsigned int sample_factor = 2;
mm_util_fenter();
GetExceptionInfo(&exception);
- _processed_image = ResizeImage(image, width, height, DefaultResizeFilter, 1.0, &exception);
+ if ((image->columns > width * check_factor) && (image->rows > height * check_factor)) {
+ _sampled_image = SampleImage(image, width * sample_factor, height * sample_factor, &exception);
+ if (_sampled_image == (Image *) NULL)
+ mm_util_error("Error: Sampling Image failed.");
+ }
+
+ if (_sampled_image != NULL)
+ _processed_image = ScaleImage(_sampled_image, width, height, &exception);
+ else
+ _processed_image = ScaleImage(image, width, height, &exception);
+
if (_processed_image == NULL) {
mm_util_error("Error: Resizing Image failed.");
if (exception.severity != UndefinedException)
CatchException(&exception);
}
+ if (_sampled_image != NULL)
+ DestroyImage(_sampled_image);
+
DestroyExceptionInfo(&exception);
mm_util_fleave();
_image_info = CloneImageInfo(0);
g_strlcpy(_image_info->filename, path, sizeof(_image_info->filename));
+ AddDefinition(_image_info, "jpeg", "dct-method", "FASTEST", &exception);
+ AddDefinition(_image_info, "jpeg", "block-smoothing", "FALSE", &exception);
+ AddDefinition(_image_info, "jpeg", "fancy-upsampling", "FALSE", &exception);
+
_image = ReadImage(_image_info, &exception);
if (_image == NULL) {
image->filename[MaxTextExtent-1] = '\0';
strncpy(image->filename, out_path, sizeof(image->filename));
+
+ AddDefinition(image_info, "jpeg", "dct-method", "FASTEST", &exception);
+ AddDefinition(image_info, "jpeg", "optimize-coding", "FALSE", &exception);
+ //DeleteImageProfile(image, "EXIF");
+ DeleteImageProfile(image, "8BIM");
+ DeleteImageProfile(image, "ICM");
+ DeleteImageProfile(image, "IPTC");
+ DeleteImageProfile(image, "XMP");
+
if (WriteImage (image_info, image) == MagickFalse) {
mm_util_error("Error: Writing Image failed.");
if (exception.severity != UndefinedException)