Проблемы с компиляцией ImageMagick с Heic
У меня были похожие проблемы с оригинальным постером
Как установить библиотеки делегатов для Image Magick 7.0.7
- Нет делегатов после здания 7.0.8-37.
Я установил все нечетные библиотеки 240 Мб и второй лот, который включал "libheif-dev". Когда я попытался использовать одну (большую) команду, она завершилась с ошибкой "404", поэтому я использовал инструкции с веб-сайта IM. "Сделать" не удалось с
.....
CC coders/MagickCore_libMagickCore_7_Q16HDRI_la-heic.lo
coders/heic.c: In function ‘WriteProfile’:
coders/heic.c:546:18: warning: implicit declaration of function ‘heif_context_add_exif_metadata’; did you mean ‘heif_image_handle_get_metadata’? [-Wimplicit-function-declaration]
.... etc
*** [coders/MagickCore_libMagickCore_7_Q16HDRI_la-heic.lo] Error 1
make[1]: Leaving directory '/home/xxxx/imagemagick_build/ImageMagick-7.0.8-39'
Makefile:5761: recipe for target 'all' failed
make: *** [all] Error
Не имея Iphone, я решил, что мне не нужен "HEIC", и удалил "libheif-dev", и попытался снова привести новый ImageMagick:
Version: ImageMagick 7.0.8-39 Q16 x86_64 2019-04-08 https://imagemagick.org
Я могу начать играть с ним сейчас - по крайней мере, теперь он отображает JPEG.
Спасибо Андрей46
6 ответов
Надеюсь, я слишком долго буду бороться за то, что слишком долго готовлюсь к тому, чтобы стать могущим и бегущим.
Компиляция imagemagick с поддержкой HEIC из чистой установки Ubuntu:
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get install build-essential autoconf git-core
$ sudo apt-get build-dep imagemagick libde265 libheif
$ cd /usr/src/
$ sudo git clone https://github.com/strukturag/libde265.git
$ sudo git clone https://github.com/strukturag/libheif.git
$ cd libde265/
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make –j4
$ sudo make install
$ cd /usr/src/libheif/
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make –j4
$ sudo make install
$ cd /usr/src/
$ sudo wget https://www.imagemagick.org/download/ImageMagick.tar.gz
$ sudo tar xf ImageMagick.tar.gz
$ cd imagemagick<version>
$ sudo ./configure --with-heic=yes
$ sudo make –j4
$ sudo make install
$ sudo ldconfig
$ mogrify --version
# heic should appear in the Delegates line
Дополнительные ссылки:
https://linuxconfig.org/how-to-install-imagemagick-7-on-ubuntu-18-04-linux
https://github.com/ImageMagick/ImageMagick/issues/1470
https://github.com/strukturag/libheif/blob/master/README.md
https://github.com/strukturag/libde265/blob/master/README.md
В итоге я использовал IMEI — ImageMagick Easy Install , который отлично работал на Ubuntu 20.04. Его можно установить следующим образом (цитата со страницы проекта на GitHub):
Одноэтапная автоматическая установка
t=$(mktemp) && \ wget 'https://dist.1-2.dev/imei.sh' -qO "$t" && \ bash "$t" && \ rm "$t"
Альтернативный метод установки
git clone https://github.com/SoftCreatR/imei && \ cd imei && \ chmod +x imei.sh && \ ./imei.sh
У меня была та же проблема под Ubuntu 18.04 при попытке скомпилировать последнюю версию ImageMagick 7.0.8. Решением было вручную скомпилировать и установить последнюю версию libheif отсюда. После этого компиляция удалась. Не забудьте сначала удалить пакет libheif, поставляемый Ubuntu по умолчанию, как libheif, так и libheif-dev.
Для 18.04 и 20.04 LTS вы можете попробовать выполнить следующие шаги, которые являются продолжением ответа Криса Смита :
Шаг 1
sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install build-essential autoconf libtool git-core
sudo apt-get build-dep imagemagick libmagickcore-dev libde265 libheif
cd /usr/src/
sudo git clone https://github.com/strukturag/libde265.git
sudo git clone https://github.com/strukturag/libheif.git
cd libde265/
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install
cd /usr/src/libheif/
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install
cd /usr/src/
sudo wget https://www.imagemagick.org/download/ImageMagick.tar.gz
sudo tar xf ImageMagick.tar.gz
cd ImageMagick-7*
sudo ./configure --with-heic=yes
sudo make
sudo make install
sudo ldconfig
Шаг 2
sudo apt install php-imagick
cd /usr/src/
wget http://pecl.php.net/get/imagick-3.4.4.tgz
tar -xvzf imagick-3.4.4.tgz
cd imagick-3.4.4/
### If you are using 20.04 LTS, use php7.4-dev below.
apt install php7.4-dev
### If you are using 18.04 LTS, use php7.2-dev below.
apt install php7.2-dev
phpize
./configure
make
make install
sudo phpenmod imagick
Шаг 3
sudo systemctl restart apache2
php -r 'phpinfo();' | grep HEIC
You should see:
ImageMagick supported formats => 3FR, 3G2, 3GP, A, AAI, AI, ART, ARW, AVI, AVS, B, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, C, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUBE, CUR, CUT, DATA, DCM, DCR, DCRAW, DCX, DDS, DFONT, DJVU, DNG, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FLV, FRACTAL, FTP, FTS, G, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, HALD, HDR, HEIC,...
Образец кода
<?php
$im = new Imagick();
$im->setSize(1280, 1280);
$im->setFormat('heic');
$im->readImage( __DIR__ . '/tmp/test.jpg' );
$im->cropThumbnailImage( 1280, 1280 );
$im->setImageCompressionQuality(80);
$im->writeImage( __DIR__ . '/tmp/test_1280.heic' );
$im->destroy();
$im = new Imagick();
$im->setSize(1280, 1280);
$im->setFormat('jpg');
$im->readImage( __DIR__ . '/tmp/test.jpg' );
$im->cropThumbnailImage( 1280, 1280 );
$im->setImageCompressionQuality(80);
$im->writeImage( __DIR__ . '/tmp/test_1280.jpg' );
$im->destroy();
?>
Источник: 5 минут для установки Imagemagick с поддержкой HEIC в Ubuntu 20.04 (и 18.04) DigitalOcean
Закончилось этим решением (включает в себя все функции, которые я мог установить): https://gist.github.com/hurricup/e14ae5bc47705fca6b1680e7a1fb6580
Альтернативой компиляции является использование докера с готовым образом. Есть один , который отлично сработал для меня, но вы можете поискать другие.
Преобразование из HEIC в PNG было таким же простым, как:
docker run -v /path/to/picsdir/:/pics --rm dpokidov/imagemagick /pics/img.heic /pics/img.png
Экономит время.