Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP menukar imej warna benar kepada imej palet

PHP menukar imej warna benar kepada imej palet

王林
王林ke hadapan
2024-03-21 11:27:33643semak imbas

editor php Yuzai membawakan anda tutorial tentang menukar imej warna sebenar kepada imej palet. Dalam pemprosesan imej, adalah keperluan biasa untuk menukar imej warna sebenar kepada imej palet, yang boleh mengurangkan saiz fail imej, meningkatkan kelajuan pemuatan, dan sesuai untuk beberapa adegan yang tidak mempunyai keperluan warna yang tinggi. Artikel ini akan memperkenalkan cara menggunakan perpustakaan GD dalam PHP untuk melaksanakan proses penukaran ini, membantu anda memproses imej dengan lebih baik dan mengoptimumkan prestasi halaman web.

PHP Tukar Imej Warna Sebenar kepada Imej Palet

Dalam grafik komputer, imej truecolor menyimpan maklumat warna lengkap setiap piksel, menggunakan perwakilan 24-bit atau 32-bit. Imej palet menggunakan palet, yang menyimpan bilangan warna yang terhad, dengan setiap indeks piksel sepadan dengan warna dalam palet.

Menukar imej warna sebenar kepada imej berpalet memerlukan langkah berikut:

1. Cipta palet

Pertama sekali, anda perlu mencipta palet yang mengandungi warna koleksi yang anda ingin gunakan untuk imej palet. Bilangan warna hendaklah kurang daripada atau sama dengan 256 (mod 8-bit).

2. Kira imej warna sebenar

Seterusnya, imej warna sebenar perlu dikuantisasi, mengurangkan ruang warnanya kepada warna dalam palet. algoritma berikut boleh digunakan:

  • Penghirisan Purata: Kira purata bagi setiap saluran warna dan bulatkan kepada warna terdekat dalam palet.
  • Penghirisan Median: Isih piksel mengikut tertib dan pilih warna piksel tengah sebagai warna palet.
  • Kuantiti Oktre: Gunakan struktur data Octree untuk membahagikan ruang warna kepada subruang dan pilih warna yang paling kerap dalam setiap subruang.

3. Cipta imej indeks palet

Selepas pengkuantitian, imej yang diindeks palet perlu dibuat, di mana setiap nilai piksel mewakili indeks warna dalam palet.

4. Hasilkan fail palet

Akhir sekali, anda perlu menjana fail palet yang mengandungi nilai RGB warna dalam palet. Fail palet biasanya menggunakan format seperti ACT, PAL atau BMP.

contoh kod PHP

Contoh kod php berikut menggunakan perpustakaan GD untuk menukar imej warna sebenar kepada imej palet:

<?php

// 加载真彩色图像
$image = imagecreatefrompng("image.png");

// 创建颜色表
$palette = array(
"white" => array(255, 255, 255),
"black" => array(0, 0, 0),
"red" => array(255, 0, 0),
"green" => array(0, 255, 0),
"blue" => array(0, 0, 255)
);

// 通过中间值算法量化图像
imagepalettetotruecolor($image);
imagequantize($image, 256, 0, GD_TRUE_COLOR_FIXED);

// 创建颜色索引图
$indexedImage = imagecreatetruecolor(imagesx($image), imagesy($image));
imagecopy($indexedImage, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));

// 生成调色板文件
$paletteFile = "palette.act";
file_put_contents($paletteFile, pack("CCCCCCCCCCCCCCCC", $palette["white"][0], $palette["white"][1], $palette["white"][2], $palette["black"][0], $palette["black"][1], $palette["black"][2], $palette["red"][0], $palette["red"][1], $palette["red"][2], $palette["green"][0], $palette["green"][1], $palette["green"][2], $palette["blue"][0], $palette["blue"][1], $palette["blue"][2]));

// 保存调色板图像
imagepng($indexedImage, "palette.png");

?>

Kelebihan

Menukar imej warna sebenar kepada imej palet mempunyai kelebihan berikut:

  • Pengurangan Saiz Fail: Imej palet menggunakan pengindeksan dan bukannya maklumat warna, sekali gus mengurangkan saiz fail.
  • Masa pemuatan lebih cepat: Imej palet dimuatkan lebih cepat daripada imej warna sebenar kerana tidak perlu menyahkod maklumat warna setiap piksel.
  • Kurang jejak ingatan: Imej palet menggunakan lebih sedikit ruang dalam ingatan kerana palet disimpan dalam fail berasingan.

Kelemahan

Menukar imej warna sebenar kepada imej palet juga mempunyai beberapa kelemahan:

  • Kesetiaan warna yang dikurangkan: Terdapat bilangan warna yang terhad dalam imej palet, jadi kesetiaan warna dikurangkan berbanding dengan imej warna sebenar.
  • Tidak sesuai untuk kecerunan: Imej palet mengalami kesukaran untuk mewakili kecerunan kerana ia menggunakan warna diskret.
  • Kehilangan tekstur kompleks: Imej palet mungkin mengalami kesukaran untuk mewakili tekstur kompleks kerana ia hanya boleh menggunakan bilangan warna yang terhad.

Atas ialah kandungan terperinci PHP menukar imej warna benar kepada imej palet. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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