Commit 0f600496 authored by Dima Kogan's avatar Dima Kogan Committed by Lars Ingebrigtsen

Support integer image rotation and respect EXIF rotations

* src/image.c (imagemagick_load_image): Allow integer rotations in
addition to floating point rotations (bug#22591).
* src/image.c (imagemagick_load_image): Images that have an
orientation given in EXIF and have no explicit :rotation tag are now
pre-rotated.  All information such as width/height is reported for the
rotated image.
parent 7dd45b61
......@@ -8546,6 +8546,16 @@ imagemagick_load_image (struct frame *f, struct image *img,
return 0;
}
/* If no :rotation is explicitly specified, apply the automatic
rotation from EXIF. */
if (NILP (image_spec_value (img->spec, QCrotation, NULL)))
if (MagickAutoOrientImage (image_wand) == MagickFalse)
{
image_error ("Error applying automatic orientation in image `%s'", img->spec);
DestroyMagickWand (image_wand);
return 0;
}
if (ino < 0 || ino >= MagickGetNumberImages (image_wand))
{
image_error ("Invalid image number `%s' in image `%s'", image, img->spec);
......@@ -8646,7 +8656,7 @@ imagemagick_load_image (struct frame *f, struct image *img,
image_spec_value (img->spec, QCbackground, NULL); if (!STRINGP
(specified_bg). */
value = image_spec_value (img->spec, QCrotation, NULL);
if (FLOATP (value))
if (FLOATP (value) || INTEGERP (value))
{
rotation = extract_float (value);
status = MagickRotateImage (image_wand, bg_wand, rotation);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment