imagepalettecopy

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagepalettecopy β€” ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ изобраТСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅

ОписаниС

function imagepalettecopy(GdImage $dst, GdImage $src): void

Ѐункция imagepalettecopy() ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΈΠ· изобраТСния src Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ dst.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

dst

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ изобраТСния.

src

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ исходного изобраТСния.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния послС выполнСния.

Бписок измСнСний

ВСрсия ОписаниС
8.0.0 ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ dst ΠΈ src Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ экзСмпляр класса GdImage; Ρ€Π°Π½ΡŒΡˆΠ΅ оТидался рСсурс (resource).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ копирования ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ imagepalettecopy()

<?php

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΏΠ°Π»ΠΈΡ‚Ρ€ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ
$palette1 = imagecreate(100, 100);
$palette2 = imagecreate(100, 100);

// Π—Π΅Π»Ρ‘Π½Ρ‹ΠΉ Ρ„ΠΎΠ½ Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ изобраТСния
$green = imagecolorallocate($palette1, 0, 255, 0);

// ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ ΠΈΠ· 1-Π³ΠΎ изобраТСния Π²ΠΎ 2-Π΅
imagepalettecopy($palette2, $palette1);

// ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°Π»ΠΈΡ‚Ρ€Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ скопирована, устанавливаСм Π·Π΅Π»Ρ‘Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚,
// Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ, Π½Π΅ вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ imagecolorallocate() Π΄Π²Π°ΠΆΠ΄Ρ‹
imagefilledrectangle($palette2, 0, 0, 99, 99, $green);

// Π’Ρ‹Π²ΠΎΠ΄ изобраТСния Π² Π±Ρ€ΠΎΡƒΠ·Π΅Ρ€
header('Content-type: image/png');

imagepng($palette2);

?>
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 2 notes

up
1
buzz at nospam dot oska dot com ΒΆ
20 years ago
actually it doesn't "copy" the palette exactly.  It copys the colors from the source palette to the destination image.   the palette you end up with in the destination image will be "same colors different order".   If you want an EXACT palette copy (at the expense of messing up your image if you aren't careful), then use this code: 
<?
// this is a drop-in replacement for imagepalettecopy, except that it make NO attempt to modifiy any of the 
// colors in the dest image, just the palette.   The result?  if you're palette's aren't very similar, the image will look completely different, and likely terrible!
function imagepalettecopy_exact ( $dst_img, $src_img) {
    for( $c = 0 ; $c < imagecolorstotal($src_img); $c++) {
        $col = imagecolorsforindex($src_img,$c);  //get color at index 'c' in the color table
        imagecolorset($dst_img,$c,$col[red],$col[green],$col[blue]); //set color at index 'c' to $col in the $dst_image
    }
}

?>
up
0
Los Olvidados ΒΆ
23 years ago
To be precise, this function replaces the palette in the destination.