Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Podmiana kolorów z plikach graficznych
Forum PHP.pl > Forum > Przedszkole
sadistic_son
Pytanie niezwiązane z programowaniem.

Mam mnóstwo małych pliczków graficznych, przyjmijmy że są to 24 bitowe bitmapy.
We wszystkich z nich są użyte tylko 4 kolory, a mianowicie 4 odcienie pomarańczowego.
Chciałbym pozamieniać te kolory na inne wskazane prze mnie, przyjmijmy 4 odpowiednie odcienie czerwonego.
Tak więc np. kolor jasny-pomarańczowy na jasny-czerwony, ciemny-pom na ciemny-czerwony itd.
Ręczna podmiana każdego koloru w każdym pliku po kolei zajmie mi wieki.
Znacie jakiś programik który coś takiego może wykonać?
Kumpel mi tu podpowiada jakiś sposób na skrypt z VisualBasica odpalony w Corelu ale stworzenie tego tak żeby działało też zajmie mi wieki.
kadlub
a próbowałeś Adobe Bridge
sadistic_son
Nie, nie próbowałem. A jesteś pewien, że tam jest taka opcja czy po prostu pytasz, czy to próbowałem?
kadlub
wiem że zmiany można zastosować do kilkunastu pików kiedyś sie tym bawiłem np wiem że możesz zmienić rozmiar pliku i zastosować do reszty myślę że kolor też można zmienić
sadistic_son
Hmm, spróbuję, "zamówię" sobie ten programik wink.gif
thek
Skoro siedzisz w php to czemu tego języka nie użyjesz? Skoro masz taką ograniczoną liczbę kolorów to może użycie imagecolorstotal, imagecolorsforindex, imagecolorset Ci pomoże? Zwróć uwagę na komentarze tych funkcji w manualu a podpowiedzą Ci nieco. Ogólnie to by mogło wyglądaćtak: otwórz obraz, pobierz paletę kolorów, zlicz je i podmień znalezione na odpowiadające Ci. Nie testowałem tego rozwiązania więc przetestuj czy działa. To co opisałem to jedynie teoria na bazie manuala i możliwości dawanych funkcjami biblioteki GD. Ale czy zadziałają jak trzeba to nie wiem. Tak czy inaczej napisanie tego skryptu powinno być o niebo szybsze niż pisanie w języku, którego nie znasz wink.gif
Kshyhoo
To forum o PHP, więc bawmy się w PHP wink.gif
  1. <?php
  2. $kolory = array(
  3. array(255, 0, 0, 0, 0, 0), // czerwony na czarny
  4. array( 0, 0, 0,255,255,255), // czarny na biały
  5. array( 0,255, 0,255,255, 0), // zielony na żółty
  6. array(255,255, 0,153,153,153) // żółty na szary
  7. );
  8.  
  9. $img=ImageCreateFromPNG("klip1.png");
  10. for ($i=0; $i<ImageColorsTotal($img); $i++) {
  11. $c = ImageColorsForIndex($img, $i);
  12. foreach ($kolory as $k) {
  13. if ($c["red"]==$k[0] and $c["green"]==$k[1] and $c["blue"]==$k[2])
  14. ImageColorSet($img, $i, $k[3], $k[4], $k[5]);
  15. }
  16. }
  17. ImagePNG($img,"klip2.png");
  18. ImageDestroy($img);
  19. ?>
  20.  
  21. <img src="klip1.png" alt="" />
  22. <img src="klip2.png" alt="" />

Kolory oczywiście przykładowe...
ImageColorsForIndex() pobiera składowe koloru z palety.
ImageColorSet() przypisuje nowy kolor.

@thek - wyprzedziłeś mnie ;P
sadistic_son
Hmm rozwiązania ciekawe, phpem rzeczywsicie moznaby to zrobic. a razie znalazlem tymczasowe rozwiazanie, do podmiany tylko najwazniejszych plikow. Bede testowal reszte rozwiazan jak bede juz musial pozamieniac wszystkie pliki.

Dzieki ALL.
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.