Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Obraz z tablicy dwuwymiarowej
Forum PHP.pl > Forum > Przedszkole
papaver
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-
przy użyciu biblioteki GD - imagecreate (lub imagecreatetruecolor) + pętla po tablicach i imagecolorset
papaver
Dzięki. Czy mógłbym jednak prosić o jakiś przykład? Z [PHP] mam do czynienia od tygodnia.
thek
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 smile.gif I chyba mamy wszystko.
papaver
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
Prosze, tu masz przyklady:
http://pl2.php.net/manual/pl/control-structures.for.php
najpierw zapoznaj się pętlą FOR. Gdy ją opanujesz zajmiemy się grafiką
papaver
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
A w jakiej postaci ty masz tę tablicę w pliku?
papaver
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 smile.gif
thek
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
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
endfor


potem

pcolor(A)

i rysunek jest gotowy.

Chce natomiast to samo zrobić tylko w php.
BLOB jest już zdekodowany i nadaje się do robienia grafiki. smile.gif
Fifi209
thek base64 chyba koduje w inny sposób niż on opisał. ;p
papaver
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
Fifi... A skąd ja mam wiedziec do końca jak to jest kodowane smile.gif 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 smile.gif
papaver
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.