Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Czytanie kolorow pixeli z obrazka
Forum PHP.pl > Forum > Przedszkole
rossco
Witam wszystkich

Napisalem kawalek kodu ktory zczytuje wszystkie kolory z obrazka i drukuje je na stronie w postaci tablicy z kolorami RGB. Chcial bym zeby mozna bylo kolory indexow zapisywac do pliku i okreslac jaki kolor w danym obrazku przewaza.
Z gory dzieki za pomoc

Pozdrawiam
  1. <?php
  2.  
  3.  
  4. $im = imagecreatefrompng('im2.png');
  5.  
  6.  
  7. $szerokosc=imagesx($im);
  8. $wysokosc=imagesy($im);
  9. for ($sze=1; $sze<=$szerokosc; $sze++) {
  10.  for ($wys=1; $wys<=$wysokosc; $wys++) {
  11. $color_index = imagecolorat($im, $szer, $wys);
  12.  
  13.  
  14. $color_tran = imagecolorsforindex($im, $color_index);
  15.  
  16.  
  17. print_r($color_tran);
  18. }
  19.  
  20. }
  21. ?>



-------------------------
uprasza się o poprawne
używanie BBCode
tym razem poprawiłem
~Cienki1980
Wykrywacz
1. Użyj BBCodu
2. Rozumiem że chodzi ci o zapisanie wyniku do pliku? Czy źle rozumiem? jak dobrze
http://php.net.pl/manual/pl/function.fopen.php
http://php.net.pl/manual/pl/function.fwrite.php
http://php.net.pl/manual/pl/function.fclose.php

jak źle rozumiem, to rozwiń bo tylko to udało mi się wywnioskować. smile.gif
rossco
Chodzi mi o to zeby mozna bylo dane o kolorach porownac i okreslic np procentowo ktory kolor w obrazku przewaza
crash
Chwila nudy i niezbyt wymagającego myślenia:
  1. <?php
  2.  
  3. $img = imagecreatefromjpeg( './img.jpg' );
  4.  
  5. $sX = imagesx( $img );
  6. $sY = imagesy( $img );
  7.  
  8. $colors = array();
  9.  
  10. for( $x = 1; $x <= $sX; $x++ )
  11. {
  12.  for( $y = 1; $y <= $sY; $y++ )
  13.  {
  14. $color = imagecolorat( $img, $x, $y );
  15.  
  16. if( array_key_exists( (int)$color, $colors ) )
  17. {
  18.  $colors[ $color ]++;
  19. }
  20. else
  21. {
  22.  $colors[ $color ] = 1;
  23. }
  24.  }
  25. }
  26.  
  27. arsort( $colors );
  28.  
  29. $colorsCount = count( $colors );
  30.  
  31. foreach( array_slice( $colors, 0, 10, true ) as $colorIdx => $count )
  32. {
  33.  $color = imagecolorsforindex( $img, $colorIdx );
  34.  
  35.  echo '<span style="color: rgb(' . $color[ 'red' ] . ',' . $color[ 'green' ] . ',' . $color[ 'blue' ] . ');"><b>&bull;</b> ' . $colorIdx . ': ' . $count . ' razy (' . round( $count / $colorsCount * 100, 2 ) . '%)</li><br/>';
  36. }
  37.  
  38. imagedestroy( $img );
  39.  
  40. ?>
rossco
Dzieki ale co snie moge sobie poradzic wywala mi blad

Warning: Wrong parameter count for array_slice()

Warning: Invalid argument supplied for foreach()
crash
array_slice" title="Zobacz w manualu PHP" target="_manual - funkcja ta w PHP w wersji starszej niż 5.0.2 resetowała klucze w tablicach asocjacyjnych. Pewnie używasz starszej wersji PHP która nie obsługuje 4-go argumentu funkcji. Zmień array_slice( $colors, 0, 10, true ) na $colors w pętli foreach, ale nie będzie to najlepsze rozwiązanie w przypadku dużej ilości kolorów. No ale - fundamenty już masz, teraz Twoja kolej na włączenie myślenia!
rossco
Dzieki wielkie Crash exclamation.gif guitar.gif
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.