papaver
26.01.2011, 10:04:51
Witam
Mam tablice dwuwymiarową, której każda wartości opisuje kolor (odcień) piksela. Jak wygenerować obraz z takiej tablicy w [php] i wyświetlić go na stronie?
-webdevil-
26.01.2011, 10:10:56
przy użyciu biblioteki GD - imagecreate (lub imagecreatetruecolor) + pętla po tablicach i imagecolorset
papaver
26.01.2011, 10:19:36
Dzięki. Czy mógłbym jednak prosić o jakiś przykład? Z [PHP] mam do czynienia od tygodnia.
thek
26.01.2011, 10:27:13
Dwie pętle for. jedna używa szerokości, druga wysokości. Do tego funkcja ustawiająca kolor dla piksela o danych współrzędnych

I chyba mamy wszystko.
papaver
26.01.2011, 11:13:17
Dzięki.
Ja niestety nie miałem styczności z programowaniem i pętla for oraz funkcja przypisująca kolory to dla mnie jak obliczenie całki z e^x po dx dla kogoś z podstawówki, niby proste ale dopiero jak ktoś wytłumaczy lub zademonstruje przykład.
nospor
26.01.2011, 11:25:29
Prosze, tu masz przyklady:
http://pl2.php.net/manual/pl/control-structures.for.phpnajpierw zapoznaj się pętlą FOR. Gdy ją opanujesz zajmiemy się grafiką
papaver
26.01.2011, 11:37:36
Ok, zapoznałem się z FOR'em. Proszę o następną wskazówkę. Jeszcze jedno pytanie, jak sprawdzić rozmiar tablicy zapisanej w pliku txt?
nospor
26.01.2011, 11:39:06
A w jakiej postaci ty masz tę tablicę w pliku?
papaver
26.01.2011, 11:59:23
Jest to plik .dat , został wygenerowany z pliku XML z sekcji BLOB. Po otworzeniu go notatnikiem jest około 1300 lini i 850 kolum. Jest tam dużo zer, z tego co mi sie wydaje należy zrobic z tego tablice 400 na 400 i wyeliminować wartości zerowe (chyba). Są w niej wartości ujemne: -11.7719655984252 jak i dodatnie np. 69.
W sekcji BLOB zapisany był obraz i został on zdekompresowany do formy tablicy w tym pliku, by łatwo było zrobić obraz
thek
26.01.2011, 12:12:03
Skoro był to blob, to niekoniecznie musi to być tak zapisane jak myślisz. Może to być cokolwiek i jeśli nie wiesz jakim algorytmem to potraktowano by teraz zdekodować, to trochę kicha. Może być na pałę plik i tylko trzeba dodać header, może być to w base64 czy też jeszcze inaczej.
papaver
26.01.2011, 12:20:21
Z tego pliku w octave da się wygenerować obraz :
max=18.8585;
min=-20;
gain=(max-min)/254;
I=load('output3.dat');
A=zeros(400,400);
for i=1:400
for j=1:400
if I(i,j)==A(i,j)
A(i,j)=0;
else
A(i,j)=min+gain*I(i,j);
endif
endfor
endforpotem
pcolor(A)i rysunek jest gotowy.
Chce natomiast to samo zrobić tylko w php.
BLOB jest już zdekodowany i nadaje się do robienia grafiki.
Fifi209
26.01.2011, 12:22:21
thek base64 chyba koduje w inny sposób niż on opisał. ;p
papaver
26.01.2011, 14:23:36
Ten obraz to mapka, więc wartości tego pliku odzwierciedlaja dlugosc i szerokosc geograficzna, by zrobić ten obraz trzeba przeskalować je na wartości odpowiednich pikseli co czyni powyzej przedstawiona fukncja i petla.
Ok. Mam tablice 400na400, chce ja ,,przekonwertowac'' na obraz. Troche namieszalem dwoma poprzednimi postami.
thek
26.01.2011, 17:39:34
Fifi... A skąd ja mam wiedziec do końca jak to jest kodowane

Na upartego może się tak zdarzyć, że kodowany w base64 plik da takie wyniki. Kwestia tylko małego prawdopodobieństwa. Z tego co widać to Podobną tablicę i to podobnie jak w octave można bez problemu utworzyć w php. Tylko brak funkcji pcolor i musisz ją sam pętlami zasymulować. For wewnatrz for i funkcja do kolorowania piksela. Zajrzyj do opisu biblioteki GD a na bank po angielskiej nazwie rozpoznasz o jaką funkcję chodzi
papaver
31.01.2011, 08:37:43
Dzieki wszystkim za pomoc:)
Pozdrawiam:)
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.