vereb
1.11.2007, 14:58:07
Witam
Szukałem, szukałem, lecz nie znalazłem. Piszę pracę dyplomowa na temat dynamicznego generowania grafiki przez PHP. Dane są przesyłane poprzez zmienne do skryptu który przekształca je w plik PNG. Problem w tym że przy przesłaniu tekstu gdzie nie ma spacji- wszystko działa, ale gdy tylko wpiszę spacje plik się generuje ale jest on pusty. Jeśli spróbuje wpisać znak "+" to w wygenerowanym pliku PNG pojawia się znak spacji, a nie "+".
Próbowałem już sprawdzać co jest przesyłane przez formularz, ciąłem to na pojedyńcze znaki i próbowałem zastapić np znaki spacji na znak "+" (nie działa, tzn. zmienne się modyfikują, ale plik PNG dalej jest pusty). Próbowałem użyć funkcji "urlencode" (czy jakoś tak) - ale też nie działa.
Skończyły mi się pomysły...
Oto kawałek kodu generującego PNG:
$licznik=1; // $licznik okresla którą linijkę tekstu obrabiamy
while ($licznik <= "$przekaznik") {
imagettftext($im, $fl_size[$licznik], 0, $x[$licznik], $text_hight[$licznik], $czarny, $font[$licznik], $string[$licznik]); //tworze obraz z wczytanej linii
$licznik++;
$przesuniecie=$przesuniecie+$przesuniecie;
};
//Export obrazka i zwolnienie pamieci
ImagePng($im);
ImageDestroy($im);
Pomożecie??
krowal
1.11.2007, 15:17:12
A co dokładnie znajduje się w zmiennej $string ? jeśli to tablica to zrób print_r($string) i pokaż co ci wyświetli.
Darti
1.11.2007, 20:49:55
Moze zmien metode przesylania danych z formularza z GET na POST ?
vereb
1.11.2007, 22:16:42
sprawdzalem i GET i POST- nie ma różnicy (obecnie potrzebuje metody POST do przesyłania pliku na serwer)
Sprawdziłem to co napisał krowal ale z danymi wprowadzonymi z palucha a nie z formularza i wszystko gralo wiec rzeczywiscie problem jest w przesyłaniu zmiennych z formularza. Musze jeszcze wyjasnic ze całość wyglada nastepujaco:
- mam plik form1.php z formularzem
- dane z ww formularza przesyłane są do skryptu proba.php ktory zamienia dane ze zmiennych na plik PNG
- wynik ze skryptu proba.php jest (wraz ze zmiennymi wczesniej przeslanymi) przesyłany spowrotem do pliku form1.php i jest wyswietlany poprzez <img src="proba.php?ciąg_zmiennych_ze_skryptu"> i tak w kółko
franki01
2.11.2007, 00:52:15
Moglbys pokazac wiekszy fragment skryptu (używając ]php[)?
A tak w ogole to linijka:
<?php
$przesuniecie=$przesuniecie+$przesuniecie;
?>
chyba nie spełnia tego co powinna, bo podwaja przesuniecie, a powinna tylko dodac wysokosc linijki...
Moze byc naprawde mnostwo powodow, wiec najlepiej jakbys pokazal to co już napisałeś...
vereb
23.11.2007, 15:44:34
- rozmiar pliku PNG jest pobierany z bazy danych- dzieki temu okreslam ile linijek powinno znalezc sie w pliku
- ponizszy fragment kodu odpowiada za przesylanie zmiennych do skryptu proba.php gdzie generowany jest PNG oraz za wyswietlenie wyniku dzialania skryptu (ze wzgledu na czytelnosc podzielilem linijke na czesci)
<?php
[/size
][/font
][font
="Arial"][size
="2"]echo "</td><td><div><img src=proba.php?rozm_gumy=$rozm_gumy&linijka_1=$linijka_1&czcionka1=$czcionka1&Bold1=$Bold1&Italic1=$Italic1&rozmiar1=$rozmiar1&wyrownanie1=$wyrownanie1&linijka_2=$linijka_2&czcionka2=$czcionka2&Bold2=$Bold2&Italic2=$Italic2&rozmiar2=$rozmiar2&wyrownanie2=$wyrownanie2&linijka_3=$linijka_3&Bold3=$Bold3&Italic3=$Italic3&czcionka3=$czcionka3&rozmiar3=$rozmiar3&wyrownanie3=$wyrownanie3&linijka_4=$linijka_4&Bold4=$Bold4&Italic4=$Italic4&czcionka4=$czcionka4&rozmiar4=$rozmiar4&wyrownanie4=$wyrownanie4&linijka_5=$linijka_5&Bold5=$Bold5&Italic5=$Italic5&czcionka5=$czcionka5&rozmiar5=$rozmiar5&wyrownanie5=$wyrownanie5&linijka_6=$linijka_6&Bold6=$Bold6&Italic6=$Italic6&czcionka6=$czcionka6&rozmiar6=$rozmiar6&wyrownanie6=$wyrownanie6&linijka_7=$linijka_7&Bold7=$Bold7&Italic7=$Italic7&czcionka7=$czcionka7&rozmiar7=$rozmiar7&wyrownanie7=$wyrownanie7&przekaznik=$przekaznik&logo_image=$strUploadDir&skala_logo=$skala_logo&logo_polozenie=$logo_polozenie valign="top" width="300"></div>"; ?>
- w skrypcie proba.php odwoluje sie do skryptu ktory dynamicznie zczytuje linijki
<?php
for ($tmp_ind=1; $tmp_ind<11; $tmp_ind++) {
$str = linijka_;
$str .= $tmp_ind;
$string[$tmp_ind] = $$str;
$string[$tmp_ind] = iconv('ISO-8859-2', 'UTF-8', $string[$tmp_ind]); // polskie znaki
}
?>
W sumie jesli chodzi o zmienne z trescia to raczej nigdzie indziej nie operuje na nich.Jest ktos zdolny do pomocy? Czasu ucieka...
Nadal jestem w lesie więc podbijam temat na góre- może teraz ktoś kto umie php spróbuje pomoc...