Jump to content
php.lv forumi

GD pārkrāsošana


DZIEDI

Recommended Posts

Sveiki! Vēlos pārkrāsot šādu gradient. (otra krāsa nav blata, bet caurspīdīga)

q3dfkxxr24rgba6hb11.png

 

Patreizējais kods

ini_set("memory_limit","1024M");
$s=time();
$png = imagecreatefrompng("grad.png");
imagealphablending($png, false);
imagesavealpha($png, true);
imagetruecolortopalette($png, false, 255);
$old = imagecolorclosest($png, 0, 0, 255);
imagecolorset($png, $old, 0, 255, 0);
imagealphablending($png, false);
imagesavealpha($png, true);
Imagepng($png, "grad2.png", 7);
imagedestroy($png);
echo "Aprēķināts: ".(time()-$s);

 

Izmantojot

imagetruecolortopalette($png, false, 255);

pārkrāsojas, bet gradients nepaliek - galarezultāts ir vienkārši zaļš attēls. Neizmantojot to funkciju - vispār nekas nemainās.

 

Šāds kods strādā, bet uz vairākiem attēliem tas ir par lēnu

	for($j=0;$j<5000;$j++){
     for($i=0;$i<5000;$i++){
        $rgb = imagecolorat($png, $i, $j);
	$colors = imagecolorsforindex($png, $rgb);
        $new_r = 255;
        $new_g = 0;
        $new_b = 0;
        $alpha = round($colors['alpha']);
        $new_color = imagecolorallocatealpha($png, $new_r, $new_g, $new_b,$alpha); 
        imagesetpixel($png, $i, $j, $new_color);    
     }
  }

 

Ir kādas idejas kā izlabot pirmo?

Link to comment
Share on other sites

Flash nederēs, tur ir sarežģīāka attēla veidošana, jāsaliek kopā visa mašīna ar fonu.

 

Cik noprotu, tad Imagick nenāk līdz php un ir papildus jāpievieno php.ini failam. Lai gan neesmu pārbaudījis tā darbības ātrumu, tomēr laikam izmantot jebkurā gadījumā nesanāks, jo plānots izmantot web hostinga pakalpojumus un nevarēšu pievienot imagick

 

Prieks par lielo atsaucību :) Nu sliktākajā gadījumā var izmantot mašīnu bez izpludinātām robežām, bet gribējās pa glauno...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...