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

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

藏色散人
Lepaskan: 2023-04-10 21:20:01
ke hadapan
5897 orang telah melayarinya

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
Salin selepas log masuk
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
Salin selepas log masuk
untuk menggunakan

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

pada
extension=imagick.so
Salin selepas log masuk
untuk mendayakan sambungan.

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

php -m|grep imagick
Salin selepas log masuk
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
Salin selepas log masuk
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
Salin selepas log masuk
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();
Salin selepas log masuk
Tafsiran kod:

$im->setResolution(150, 150);
Salin selepas log masuk
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);
Salin selepas log masuk
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);
Salin selepas log masuk
Memuatkan kandungan binari fail PDF secara langsung, atau anda boleh menggunakan fungsi

untuk membaca fail PDF yang disimpan. readImage($filename)


$im->setImageFormat('jpg');
Salin selepas log masuk
Tetapkan format imej untuk dijana, seperti

, jpg, dsb., png


$im->setImageBackgroundColor('white');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
Salin selepas log masuk
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();
Salin selepas log masuk

获取转换生成图像的二进制数据,输出到客户端供下载;如果需要保存到文件,可以使用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!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan