Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP GD - Wypełnienie koloru kolorem.
Forum PHP.pl > Forum > PHP
expert
Witam,

Załóżmy, że mam na obrazku jakiś prostokąt o kolorze zielonym. Czy jest jakaś funkcja w GD, żeby wszystkie kolory zielone zamienić na inny, np. pomarańczowy?

Bo jak na razie rozwiązanie problemu przychodzi mi tylko takie:

1. Pobranie szerokości i wysokości obrazka.
2. 'Przeskanowanie' go i zapisanie pozycji w których znajduje się szukany kolor (zielony). (imagecolorat() i imagecolorsforindex())
3. Zamiana koloru. (imagecolorallocate() i imagefill())

Ma ktoś jakiś lepszy pomysł?
Kshyhoo
Wypróbuj ten kod:
  1. <?php
  2. $kolory = array(
  3. array(0,255,0, 255,255,0), // zielony na żółty (nie chciało mi się szukać pomarańczowego ;p)
  4. );
  5.  
  6. $img=ImageCreateFromPNG("obraz1.png");
  7. for ($i=0; $i<ImageColorsTotal($img); $i++) {
  8. $c = ImageColorsForIndex($img, $i);
  9. foreach ($kolory as $k) {
  10. if ($c["red"]==$k[0] and $c["green"]==$k[1] and $c["blue"]==$k[2])
  11. ImageColorSet($img, $i, $k[3], $k[4], $k[5]);
  12. }
  13. }
  14. ImagePNG($img,"obraz2.png");
  15. ImageDestroy($img);
  16. ?>

ImageColorsTotal() pobiera ilość kolorów
ImageColorsForIndex() pobiera składowe koloru
ImageColorSet() ustawia kolor
expert
$kolory w podwójnej tablicy? Już rozumiem zasadę działa twojego kodu. Wkrótce go sprawdzę.
Kshyhoo
Yy, tablica pojedyncza smile.gif
expert
To mam kolejny problem:

  1. $adres='budynki/Chatka rybacka';
  2. $obrazc = ImageCreateFromPng($adres.'/cszkielet.png'); //pobranie obrazka do skryptu
  3.  
  4. echo ImageColorsTotal($obrazc); // funkcja wyświetla 0
  5.  
  6. header("Content-type: image/gif");// po mimo tego że obrazek jest poprawnie wyświetlony
  7. ImageGif($obrazc);
  8. ImageDestroy($obrazc);


oczywiście nie mieszam wyświetlania obrazka z echo. W efekcie program nie wchodzi mi w pętlę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.