Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Obraz z tablicy dwuwymiarowej
papaver
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
--webdevil--
post
Post #2





Goście







przy użyciu biblioteki GD - imagecreate (lub imagecreatetruecolor) + pętla po tablicach i imagecolorset
Go to the top of the page
+Quote Post
papaver
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzięki. Czy mógłbym jednak prosić o jakiś przykład? Z [PHP] mam do czynienia od tygodnia.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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 (IMG:style_emoticons/default/smile.gif) I chyba mamy wszystko.
Go to the top of the page
+Quote Post
papaver
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ą
Go to the top of the page
+Quote Post
papaver
post
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ok, zapoznałem się z FOR'em. Proszę o następną wskazówkę. Jeszcze jedno pytanie, jak sprawdzić rozmiar tablicy zapisanej w pliku txt?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A w jakiej postaci ty masz tę tablicę w pliku?
Go to the top of the page
+Quote Post
papaver
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
thek
post
Post #10





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.
Go to the top of the page
+Quote Post
papaver
post
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Fifi209
post
Post #12





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


thek base64 chyba koduje w inny sposób niż on opisał. ;p
Go to the top of the page
+Quote Post
papaver
post
Post #13





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
thek
post
Post #14





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Fifi... A skąd ja mam wiedziec do końca jak to jest kodowane (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
papaver
post
Post #15





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 24.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dzieki wszystkim za pomoc:)
Pozdrawiam:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 14:47