Contoh ciri baharu dalam PHP8: Bagaimana untuk menjana imej menggunakan pengendali dan kod piksel?

王林
Lepaskan: 2023-09-11 10:16:46
asal
689 orang telah melayarinya

Contoh ciri baharu dalam PHP8: Bagaimana untuk menjana imej menggunakan pengendali dan kod piksel?

Contoh ciri baharu PHP8: Bagaimana untuk menjana imej menggunakan pengendali dan kod piksel?

Dengan keluaran PHP8, kami mempunyai banyak ciri baharu yang menarik. Salah satunya ialah pengendali piksel, yang membantu kami menjana imej dengan lebih mudah. Dalam artikel ini, kita akan belajar cara membuat imej menggunakan ciri dan kod baharu ini dalam PHP.

Mula-mula, mari kita semak secara ringkas tentang pengendali piksel. Pengendali piksel ialah satu set pengendali yang digunakan untuk memanipulasi piksel imej. Dengan menggunakan operator ini, kami boleh melakukan pelbagai operasi pada imej, seperti mengubah suai warna piksel, melaraskan kontras dan kecerahan, dsb.

Untuk contoh dalam artikel ini, kami akan menggunakan perpustakaan GD untuk memanipulasi data imej. Pastikan PHP anda memasang sambungan perpustakaan GD.

Pertama, kita perlu mencipta imej baharu. Mari buat imej putih selebar 500 piksel dan tinggi 300 piksel. Kodnya adalah seperti berikut:

$width = 500;
$height = 300;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi imagecreatetruecolor() untuk mencipta objek imej dengan saiz yang ditentukan dan menggunakan imagecolorallocate()</code > berfungsi untuk mencipta objek berwarna putih. Kami kemudian menggunakan fungsi <code>imagefill() untuk mengisi keseluruhan imej dengan warna putih. imagecreatetruecolor()函数创建了一个指定大小的图像对象,并使用imagecolorallocate()函数创建了一个白色的颜色对象。然后,我们使用imagefill()函数将整个图像填充为白色。

现在我们已经创建了一个空白的图像,接下来让我们在图像上绘制一些图形。我们将绘制一个红色矩形和一个蓝色圆形。代码如下:

$red = imagecolorallocate($image, 255, 0, 0);
$blue = imagecolorallocate($image, 0, 0, 255);

// 绘制矩形
$startX = 100;
$startY = 50;
$endX = 400;
$endY = 250;
imagerectangle($image, $startX, $startY, $endX, $endY, $red);

// 绘制圆形
$centerX = $width / 2;
$centerY = $height / 2;
$radius = 100;
imagefilledellipse($image, $centerX, $centerY, $radius, $radius, $blue);
Salin selepas log masuk

在上述代码中,我们使用imagecolorallocate()函数创建了红色和蓝色的颜色对象。接下来,我们使用imagerectangle()函数绘制了一个矩形,使用imagefilledellipse()函数绘制了一个填充的圆形。

现在,让我们使用像素运算符对图像进行一些修改。我们将把图像的每个像素的红色和蓝色分量互换,以创建一种独特的效果。代码如下:

$pixelWidth = imagesx($image);
$pixelHeight = imagesy($image);

for ($x = 0; $x < $pixelWidth; $x++) {
    for ($y = 0; $y < $pixelHeight; $y++) {
        $rgb = imagecolorat($image, $x, $y);
        $red = ($rgb >> 16) & 0xFF;
        $blue = ($rgb >> 0) & 0xFF;
        $green = ($rgb >> 8) & 0xFF;
        $newRgb = ($blue << 16) | ($green << 8) | ($red << 0);
        imagesetpixel($image, $x, $y, $newRgb);
    }
}
Salin selepas log masuk

在上面的代码中,我们使用imagesx()imagesy()函数获取图像的宽度和高度。然后,我们使用两个嵌套的循环遍历图像中的每个像素。

对于每个像素,我们使用imagecolorat()函数获取其RGB值。然后,我们使用位移和位与运算符提取红色和蓝色分量,并交换它们的位置。最后,我们使用imagesetpixel()函数将新的RGB值设置回图像。

最后,让我们将修改后的图像保存到文件中。代码如下:

$outputFile = "output.png";
imagepng($image, $outputFile);
Salin selepas log masuk

在上述代码中,我们使用imagepng()函数将图像保存到一个名为output.png

Sekarang kita telah mencipta imej kosong, mari kita lukis beberapa bentuk pada imej itu. Kami akan melukis segi empat tepat merah dan bulatan biru. Kodnya adalah seperti berikut:

rrreee

Dalam kod di atas, kami menggunakan fungsi imagecolorallocate() untuk mencipta objek berwarna merah dan biru. Seterusnya, kami melukis segi empat tepat menggunakan fungsi imagerectangle() dan bulatan terisi menggunakan fungsi imagefilledellipse().

Sekarang, mari buat beberapa pengubahsuaian pada imej menggunakan pengendali piksel. Kami akan menukar komponen merah dan biru setiap piksel imej untuk mencipta kesan unik. Kodnya adalah seperti berikut:

rrreee

Dalam kod di atas, kami menggunakan fungsi imagesx() dan imagesy() untuk mendapatkan lebar dan ketinggian imej. Kami kemudian menggunakan dua gelung bersarang untuk mengulangi setiap piksel dalam imej. 🎜🎜Untuk setiap piksel, kami menggunakan fungsi imagecolorat() untuk mendapatkan nilai RGBnya. Kami kemudian mengekstrak komponen merah dan biru menggunakan operator bit shifting dan bitwise AND dan menukar kedudukan mereka. Akhir sekali, kami menggunakan fungsi imagesetpixel() untuk menetapkan nilai RGB baharu kembali kepada imej. 🎜🎜Akhir sekali, mari simpan imej yang diubah suai ke fail. Kodnya adalah seperti berikut: 🎜rrreee🎜Dalam kod di atas, kami menggunakan fungsi imagepng() untuk menyimpan imej ke fail bernama output.png. 🎜🎜Kini, dengan menjalankan kod di atas, anda akan mendapat fail imej dengan kesan unik. 🎜🎜Dalam artikel ini, kami mempelajari cara mencipta imej menggunakan pengendali piksel PHP8 dan perpustakaan GD. Kami mula-mula mencipta objek imej kosong dan kemudian melukis beberapa bentuk asas pada imej. Kami kemudian membuat beberapa pengubahsuaian pada imej menggunakan pengendali piksel dan akhirnya menyimpan imej yang diubah suai ke fail. 🎜🎜Semoga contoh ini membantu anda memahami cara menjana imej menggunakan pengendali dan kod piksel. Dalam aplikasi praktikal, anda boleh menggunakan lebih banyak operator piksel untuk melaksanakan pelbagai operasi imej. Saya harap anda menulis lebih banyak kod pemprosesan imej yang menarik dalam dunia PHP8! 🎜

Atas ialah kandungan terperinci Contoh ciri baharu dalam PHP8: Bagaimana untuk menjana imej menggunakan pengendali dan kod piksel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!