Subject: bug#39994: 27.0.90; Broken image-converter probe for imagemagick

From: Juri Linkov <[email-masked]>
Date: Mon, 16 Mar 2020 02:23:44 +0200

Since now it's pretest time, I gave it more testing, and found more problems:

1. AFAIR one of the goals for creating image-converter.el
was to handle such rare image formats as WEBP,
but I tried to open a webp file, and image-converter failed
because it doesn't recognize WEBP.

There is no WEBP mentioned in the output of "identify -list format".
After installing `apt-get install webp`, another command
"identify -list delegate" reports its support with:

  Delegate                Command
  -------------------------------------------------------------------------------
         webp =>          "dwebp' -pam '%i' -o '%o"
          png<= webp      "cwebp' -quiet %Q '%i' -o '%o"

2. After adding manually webp to image-converter-regexp,
there is another problem: image-converter--convert-magick
calls the command with

  (apply #'call-process (car command)
         nil t nil

where the arg 't' means to mix standard error output with ordinary output,
but ImageMagick outputs some info messages to stderr, e.g.:

  Decoded /tmp/magick-20114vaPD-fxUjRW4. Dimensions: 320 x 214 . Format: lossy. Now saving...
  Saved file /tmp/magick-20114h1Jh0D04beDR

thus breaking the image output.

3. Visiting an image file from an archive signals the error

  Cannot display image: (IMAGE-FORMAT should be a symbol like ‘image/png’)

4. Exif fails to visit images with the error:

  Cannot display image: (sequencep 122)

Shouldn't exif code be called with ignore-errors, so its errors won't
affect the image displaying?

Test case:

  exif --output=blackz.jpg --tag=Artist --ifd=0 --set-value='z' test/data/image/black.jpg

Exif fails to handle ASCII field values whose length is less than 4.
In the above example the length of the 'Artist' field is 1 ('z').