Rumah pembangunan bahagian belakang tutorial php Fungsi pemprosesan imej untuk aplikasi PHP

Fungsi pemprosesan imej untuk aplikasi PHP

Jun 20, 2023 am 10:24 AM
php fungsi Pemprosesan imej

Sebagai bahasa pembangunan web yang berkuasa, PHP secara semula jadi mempunyai pelbagai fungsi aplikasi praktikal. Antaranya, fungsi untuk memproses imej adalah salah satunya. Pemprosesan imej adalah bahagian yang tidak dapat dielakkan dalam pembangunan web Daripada pemotongan dan penskalaan imej yang mudah kepada kesan khas imej yang kompleks, penapis, dll., fungsi pemprosesan imej diperlukan. Artikel ini akan memperkenalkan beberapa fungsi pemprosesan imej yang biasa digunakan dalam PHP.

1. Jenis imej dan perwakilan data

Dalam PHP, jenis imej biasa termasuk JPEG, GIF, PNG, dll. Jenis gambar yang berbeza mempunyai struktur data yang berbeza. Sebagai contoh, data imej JPEG adalah berdasarkan pekali transformasi DCT, manakala data imej PNG adalah berdasarkan nilai warna piksel. Dalam PHP, kita perlu menggunakan pustaka sambungan yang berbeza untuk menghuraikan dan memproses pelbagai jenis imej, terutamanya termasuk sambungan GD2 dan Imagick.

Sama ada menggunakan GD2 atau Imagick, kami perlu memuatkan data imej ke dalam memori untuk diproses. Oleh itu, apabila menggunakan fungsi pemprosesan imej, anda perlu menukar data imej kepada jenis data yang sepadan terlebih dahulu. Mengambil GD2 sebagai contoh, kaedah pemuatan data imej biasa adalah seperti berikut:

//加载JPEG图片
$image = imagecreatefromjpeg('image.jpg');
//加载PNG图片
$image = imagecreatefrompng('image.png');
//加载GIF图片
$image = imagecreatefromgif('image.gif');
Salin selepas log masuk

Apabila menggunakan Imagick, data imej perlu dimuatkan dan diproses melalui objek Imagick. Contohnya:

//实例化Imagick对象并加载图片
$im = new Imagick('image.jpg');
//调整图片大小
$im->resizeImage(320, 240, Imagick::FILTER_LANCZOS, 1);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
Salin selepas log masuk

2. Operasi asas

  1. Mengubah saiz imej

Saiz semula imej ialah keperluan pemprosesan imej yang biasa, sama ada mengecil atau membesar. Dalam GD2, anda boleh menggunakan fungsi imagecopyresampled() untuk mencapai saiz semula imej. Fungsi ini akan menskalakan imej asal mengikut saiz yang ditentukan dan mengeluarkan data imej yang dilaraskan. Contohnya:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置目标图片尺寸
$dst_width = 320;//目标宽度
$dst_height = 240;//目标高度
//创建目标图片
$dst = imagecreatetruecolor($dst_width, $dst_height);
//缩放图片
imagecopyresampled($dst, $src, 0, 0, 0, 0, $dst_width, $dst_height, imagesx($src), imagesy($src));
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($dst);
//释放内存
imagedestroy($src);
imagedestroy($dst);
Salin selepas log masuk

Dalam Imagick, saiz semula imej dicapai melalui kaedah resizeImage(). Contohnya:

//打开原始图片
$im = new Imagick('image.jpg');
//设置目标图片尺寸
$im->resizeImage(320, 240, Imagick::FILTER_LANCZOS, 1);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
Salin selepas log masuk
  1. Pemotongan Gambar

Pemotongan Gambar biasanya digunakan untuk memangkas dan memintas gambar. Dalam GD2, anda boleh menggunakan fungsi imagecopy() untuk mencapai pemotongan imej. Fungsi ini akan menyalin piksel dalam kawasan yang ditentukan bagi imej asal kepada imej sasaran dan mengeluarkan data imej yang dipotong. Contohnya:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置目标图片尺寸
$dst_width = 320;//目标宽度
$dst_height = 240;//目标高度
//设置剪切位置和尺寸
$x = 100;//起始X坐标
$y = 100;//起始Y坐标
$width = 160;//剪切宽度
$height = 120;//剪切高度
//创建目标图片
$dst = imagecreatetruecolor($dst_width, $dst_height);
//剪切图片
imagecopy($dst, $src, 0, 0, $x, $y, $width, $height);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($dst);
//释放内存
imagedestroy($src);
imagedestroy($dst);
Salin selepas log masuk

Dalam Imagick, pemangkasan imej dilaksanakan melalui kaedah cropImage(). Contohnya:

//打开原始图片
$im = new Imagick('image.jpg');
//设置剪切位置和尺寸
$x = 100;//起始X坐标
$y = 100;//起始Y坐标
$width = 160;//剪切宽度
$height = 120;//剪切高度
//剪切图片
$im->cropImage($width, $height, $x, $y);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
Salin selepas log masuk

3. Operasi lanjutan

  1. Tanda air teks

Tanda air teks ialah kesan khas imej biasa, yang boleh digunakan untuk menjana lakaran kecil dan kelompok Ia sering digunakan dalam senario seperti memuat naik gambar. Dalam GD2, anda boleh menggunakan fungsi imagettftext() untuk melaksanakan tera air teks. Fungsi ini akan melukis teks yang ditentukan pada imej dan mengeluarkan data imej tera air. Contohnya:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置文本颜色
$color = imagecolorallocate($src, 255, 0, 0);
//设置字体文件路径
$font = 'arial.ttf';
//设置字体大小
$size = 20;
//设置水印文本
$text = 'www.example.com';
//计算文本位置
$bbox = imagettfbbox($size, 0, $font, $text);
$x = imagesx($src) - $bbox[2] - 5;
$y = imagesy($src) - $bbox[1] - 5;
//添加水印
imagettftext($src, $size, 0, $x, $y, $color, $font, $text);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($src);
//释放内存
imagedestroy($src);
Salin selepas log masuk

Dalam Imagick, tera air teks dilaksanakan melalui kaedah annotateImage(). Contohnya:

//打开原始图片
$im = new Imagick('image.jpg');
//创建画笔对象
$draw = new ImagickDraw();
//设置字体路径和大小
$draw->setFont('arial.ttf');
$draw->setFontSize(20);
//设置文本位置和颜色
$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);
$draw->setFillColor('red');
//添加水印文本
$draw->annotation(5, 5, 'www.example.com');
//绘制水印
$im->drawImage($draw);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
Salin selepas log masuk
  1. Kesan khas gambar

Kesan khas gambar ialah fokus dan kesukaran pemprosesan gambar, seperti kabur, mengasah, pelepasan dan kesan lain, yang memerlukan untuk diproses melalui algoritma. Dalam GD2, anda boleh menggunakan fungsi imagefilter() untuk melaksanakan kesan khas imej. Fungsi ini akan menapis imej asal dan mengeluarkan data imej selepas kesan khas. Contohnya:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//创建滤镜
$filter = IMG_FILTER_GRAYSCALE;//灰度滤镜
//应用滤镜
imagefilter($src, $filter);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($src);
//释放内存
imagedestroy($src);
Salin selepas log masuk

Dalam Imagick, kesan khas gambar dicapai melalui kaedah yang berbeza. Contohnya, gunakan kaedah gaussianBlurImage() untuk mencapai kesan kabur Gaussian:

//打开原始图片
$im = new Imagick('image.jpg');
//应用高斯模糊滤镜
$im->gaussianBlurImage(10, 5);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
Salin selepas log masuk

4. Ringkasan

Artikel ini memperkenalkan fungsi pemprosesan imej biasa dalam PHP, termasuk operasi asas dan operasi lanjutan. Sama ada saiz semula imej, pemangkasan, penanda air teks atau kesan khas imej, semuanya boleh dicapai melalui dua perpustakaan sambungan GD2 dan Imagick. Apabila menggunakan fungsi ini, kita perlu memberi perhatian kepada perbezaan dalam jenis imej dan perwakilan data, dan memilih fungsi dan parameter yang sesuai mengikut keperluan sebenar. Pada masa yang sama, anda juga perlu memberi perhatian kepada isu seperti penggunaan memori dan prestasi untuk mengelakkan tekanan pada pelayan.

Atas ialah kandungan terperinci Fungsi pemprosesan imej untuk aplikasi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Pembalakan CakePHP Pembalakan CakePHP Sep 10, 2024 pm 05:26 PM

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

See all articles