Rumah >pembangunan bahagian belakang >tutorial php >[PHP ImageMagick] Tukar PDF kepada imej (langkah terperinci)
Perisian pengeditan dan penciptaan gambar percuma. ImageMagick Ia boleh membaca, menukar dan menulis imej dalam pelbagai format. Pemotongan gambar, penggantian warna, aplikasi pelbagai kesan, putaran gambar, gabungan, teks, garis lurus, poligon, elips, lengkung, sambungan dan putaran yang dilampirkan pada gambar. ImageMagick ialah perisian percuma: semua kod sumber terbuka dan boleh digunakan, disalin, diubah suai, dan diedarkan secara bebas Ia mematuhi perjanjian lesen GPL dan boleh dijalankan pada kebanyakan sistem pengendalian.
Untuk menggunakan ImageMagick dalam PHP, anda perlu memasang imagick
sambungan imagick
serupa dengan sambungan gd
dan digunakan terutamanya untuk pemprosesan imej, tetapi fungsi lebih berkuasa. Berikut ialah pengenalan ringkas kepada kaedah pemasangan imagick
dalam dua persekitaran biasa. imagick
terus untuk memasangnya dalam CentOS Selain memasang Yum
, anda juga perlu memasangnya dua tanggungan ImageMagick
dan ImageMagick-devel
. ImageMagick-perl
yum install -y ImageMagick ImageMagick-devel ImageMagick-perlKemudian gunakan
untuk memasang sambungan. Cari pecl
dalam direktori pemasangan PHP Contohnya, jika PHP dipasang dalam direktori pecl
, maka /usr/local/php74
biasanya berada dalam sasaran pecl
: /usr/local/php74/bin
/usr/local/php74/bin/pecl install imagickuntuk menggunakan
Muat turun dan pasang pecl
secara automatik, dan akhirnya tambah ImageMagick
php.ini
extension=imagick.sountuk mendayakan sambungan. Jika anda perlu menyemak sama ada sambungan berjaya dipasang, anda boleh melaksanakan perintah
php -m|grep imagickJika
adalah output, ini bermakna sambungan berjaya dipasang. imagick
Digression: Jika anda tidak tahu fail konfigurasi PHP yang mana, anda boleh laksanakan arahan berikut php.ini
php74 -i|grep iniuntuk mencari " Memuatkan baris "Fail Konfigurasi", anda akan mengetahui fail konfigurasi yang digunakan PHP. Perintah
php -i
adalah serupa dengan cara kami menggunakan fungsi
untuk melihat maklumat berkaitan PHP. phpinfo()
FROM php:7.2-cli # 从Github上下载docker-php-extension-installer脚本 ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ # 添加可执行权限并安装扩展 RUN chmod +x /usr/local/bin/install-php-extensions && \ install-php-extensions gd xdebug imagickImej yang dibina dengan cara ini akan mempunyai sambungan yang diperlukan.
Penyimpangan: Dalam persekitaran rangkaian domestik, masalah tamat masa sering berlaku apabila menggunakan untuk memasang sambungan Adalah disyorkan untuk menggunakan VPS luaran untuk membina imej dan memuat naik ia ke DockerHub atau lain-lain Selepas mencipta gudang persendirian, tariknya ke rangkaian tempatan untuk digunakan. Anda boleh menggunakan awan hati nurani yang murah, atau VPS seperti Vultr yang menyokong pengebilan masa. docker-php-extension-installer
// 实例化imagick对象 $im = new imagick(); $im->setResolution(150, 150); $im->setCompressionQuality(100); $im->readImageBlob($fileContent); $im->setImageFormat('jpg'); $im->setImageBackgroundColor('white'); $im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE); $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN); header("Content-type: image/jpeg"); echo $im->getImageBlob();Tafsiran kod:
$im->setResolution(150, 150);Digunakan untuk menetapkan resolusi imej. Fungsi ini tidak mengubah resolusi sebenar imej, ia hanya menetapkannya dalam objek Imagick sebelum membaca atau mencipta imej Fungsi ini perlu dipanggil sebelum membaca imej atau mencipta imej.
Fungsi ini menerima dua parameter, iaitu resolusi mendatar dan resolusi menegak Nilai lalai ialah 72*72. Untuk mengekalkan nisbah aspek imej, nilai kedua-dua parameter ini harus sama. Imej yang ditukar dengan nilai lalai tidak cukup jelas imej juga akan menjadi lebih besar.
$im->setCompressionQuality(100);Tetapkan kualiti mampatan imej Nilai lalai ialah 0; Untuk imej format JPG, lebih kecil nilainya saiz imej dan kejelasan darjahnya juga rendah; tetapi untuk imej PNG, kesimpulan ini nampaknya tidak sesuai Apabila nilainya kurang daripada 90, saiz imej akan menjadi lebih besar, jadi apabila menukar kepada format imej PNG, simpan sahaja. nilai lalai.
$im->readImageBlob($fileContent);Memuatkan kandungan binari fail PDF secara langsung, atau anda boleh menggunakan fungsi
untuk membaca fail PDF yang disimpan. readImage($filename)
$im->setImageFormat('jpg');Tetapkan format imej untuk dijana, seperti
, jpg
, dsb., png
$im->setImageBackgroundColor('white'); $im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE); $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);Tetapkan latar belakang warna imej kepada putih dan alih keluarnya Saluran alfa imej menggabungkan semua imej ke dalam satu lapisan Jika operasi ini tidak dilakukan, latar belakang imej yang ditukar akan menjadi hitam, seperti yang ditunjukkan di bawah: <.>
header("Content-type: image/png"); echo $im->getImageBlob();
获取转换生成图像的二进制数据,输出到客户端供下载;如果需要保存到文件,可以使用writeImage($filename)
函数。
推荐:《PHP视频教程》
Atas ialah kandungan terperinci [PHP ImageMagick] Tukar PDF kepada imej (langkah terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!