Rumah >pembangunan bahagian belakang >tutorial php >[PHP ImageMagick] Tukar PDF kepada imej (langkah terperinci)

[PHP ImageMagick] Tukar PDF kepada imej (langkah terperinci)

藏色散人
藏色散人ke hadapan
2022-01-19 16:44:506038semak imbas

Pemasangan ImageMagick

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

Pasang

dalam CentOS 7. Anda boleh menggunakan

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-perl
Kemudian 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 imagick
untuk menggunakan

Muat turun dan pasang pecl secara automatik, dan akhirnya tambah ImageMagickphp.ini

pada
extension=imagick.so
untuk mendayakan sambungan.

Jika anda perlu menyemak sama ada sambungan berjaya dipasang, anda boleh melaksanakan perintah

php -m|grep imagick
Jika

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 ini
untuk 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()


Pemasangan Docker

Untuk memasang sambungan untuk PHP dalam bekas, disyorkan untuk menggunakan docker-php-extension-installer pada Github Ini ialah a Skrip Shell yang boleh Membantu kami menyelesaikan masalah pergantungan sambungan, dan mengosongkan fail tidak berguna secara automatik selepas memasang sambungan. Kami hanya perlu menambah skrip ini pada Dockerfile Berikut ialah contoh rasmi:

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 imagick
Imej 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


PDF ke imej

Contoh kod:

// 实例化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!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam