Autor | Zpráva | ||
---|---|---|---|
10messi10 Profil * |
#1 · Zasláno: 24. 12. 2014, 23:12:32
Dobrý den, chtěl bych Vás poprosit o radu. Mám v plánu dělat něco rozsáhlejšího, ale u jedný věci jsem se zasekl. Chtěl bych data, která budou v databázi, vypisovat na obrázek. Myslím tím, že bych v databázi měl nějaká data,třeba NICK - 10messi10 a last_activity - 24.12.2014. A to by se vypsalo na obrázek a uložilo, při každém přihlášení by se to aktualizovalo
Proto bych se chtěl zeptat, jak by to šlo udělat. vubec nemám ponětí. :( |
||
lionel messi Profil |
#2 · Zasláno: 24. 12. 2014, 23:25:44
10messi10:
Môžeš jednoducho nastaviť obrázok ako pozadie (pomocou CSS) a na neho vypisovať informácie z db ako text, ale to predpokladám nepotrebuješ. Druhá možnosť je komplikovanejšia, ale niečo podobné asi chceš dosiahnuť, skúsim naznačiť postup: 1. Otvoríš si obrázok (predpokladajme JPG) pomocou imagecreatefromjpeg. 2. Text do obrázku ti pomôže vložiť funkcia imagestring. 3. Obrázok vypíšeš do prehliadača pomocou imagejpeg. 4. Na záver samozrejme uvoľníš pamäť imagedestroy. |
||
10messi10 Profil * |
#3 · Zasláno: 24. 12. 2014, 23:31:14
A kdybych ten obrázek chtěl uložit s těmi daty třeba do složky upload/ a ta aktualizace by taky fungovala? :)
|
||
juriad Profil |
#4 · Zasláno: 24. 12. 2014, 23:45:22
10messi10:
Ano, vygenerovaný obrázek můžeš uložit do souboru, ale všechnu logiku kolem (kdy se má přegenerovat, co se má stát, pokud ještě neexistuje) si musíš vymyslet a naprogramovat sám. Tady někdo zkoušel vytvořit obrázkový status serveru. Třeba ti to pomůže. |
||
10messi10 Profil * |
#5 · Zasláno: 25. 12. 2014, 00:09:17
Dnes ráno se na to podívám, zatím díky :)
|
||
10messi10 Profil * |
#6 · Zasláno: 25. 12. 2014, 11:26:42
Něco jsem z toho poskládal, zatím to mám takhle, ale jeden problém je, že se ten obrázek nezobrazí. Nevíte v čem by mohl být problém?
<?php header("Content-type: image/png"); $png = imagecreatefrompng("tt.png"); $col = imagecolorallocate($png, 0, 0, 0); $text = "Test"; $font = "helvetica.ttf"; imagettftext($png, 15, 0, 75, 300, $ol, $font, $text); imagepng($png); imagedestroy($png); ?> |
||
Alphard Profil |
#7 · Zasláno: 25. 12. 2014, 11:35:16
10messi10 [#6]:
Při ladění scriptů s generovanými obrázky je nejlepší dočasně neodesílat hlavičku informující o obrázku, pak je snadnější přečíst si chybové hlášky. |
||
lionel messi Profil |
#8 · Zasláno: 25. 12. 2014, 11:36:23
10messi10:
„Nevíte v čem by mohl být problém?“ Na riadku 7 máš preklep, používaš premennú $ol , ale o tri riadky vyššie definuješ $col .
|
||
10messi10 Profil * |
#9 · Zasláno: 25. 12. 2014, 12:06:05
Hlavičku jsem dal pryč a zobrazily se takový divný znaky :D Tak jsem jí vrátil, $col jsem opravil, ale stále to nefunguje..
|
||
Chro_ Profil * |
#10 · Zasláno: 25. 12. 2014, 12:35:50
Zapni si zobrazování chyb.
<?php ini_set("display_errors", 1); error_reporting(E_ALL); //odtuď tvůj skript ?> |
||
10messi10 Profil * |
#11 · Zasláno: 25. 12. 2014, 13:28:50
Tohle se zobrazilo,
když jsem měl zápis takhle: <?php header("Content-type: image/png"); $png = imagecreatefrompng("tt.png"); $col = imagecolorallocate($png, 0, 0, 0); $text = "Test"; $font = "helvetica.ttf"; imagettftext($png, 15, 0, 75, 300, $ol, $font, $text); imagepng($png); imagedestroy($png); ?> |
||
Chro_ Profil * |
#12 · Zasláno: 25. 12. 2014, 13:44:24
To zřejmě znamená, že endora ti vkládá reklamu/text na konec souboru za ?>. Můžeš sice nastavit header na typ image, poslat obrázek na výstup funkcí imagepng, ale za výstup se přidá k proudu obrazových dat ještě text a obrázek je poškozen. Možná by pomohlo před značkou ?> vložit
exit; ?> |
||
10messi10 Profil * |
#13 · Zasláno: 25. 12. 2014, 14:20:57
Problém přetrvává, ani to nepomohlo. :D
|
||
Chro_ Profil * |
#14 · Zasláno: 25. 12. 2014, 14:56:49
Pár poznámek. Font helvetica.ttf je funkční a ve stejném adresáři jako testujeme.php, to je v pořádku. Načítaný obrázek tt.png 500x250 je tmavý a v imagettftext do něj jednak vypisuješ text s nastavenou černou barvou (chtělo by to světlejší) a druhak mimo obrázek, protože výška obrázku je 250 a v imagettftext máš osu Y nastavenou na 300. Výše uvedený tvůj skript nesmí být v souboru s dalšímy znaky natož HTML kódem jak před otevírací tak uzavírací značkou PHP. Pokud máš tedy soubor testujeme.php v UTF-8, zkontroluj, zda na začátku soubor neobsahuje BOM.
|
||
10messi10 Profil * |
#15 · Zasláno: 25. 12. 2014, 15:08:24 · Upravil/a: 10messi10
Měl jste pravdu, měl jsem to normálně v body a to dělalo tu neplechu :D Udělal jsem to takhle, jak jste napsal a funguje to tak jak má :) Děkuji mockrát :)
Chtěl jsem se zeptat, jak by se dalo udělat aby ten obrázek po zkopírování byl ve formátu .png?:D A ještě jedna věc, jde k tomu nastavit kodování? |
||
Chro_ Profil * |
#16 · Zasláno: 25. 12. 2014, 16:12:11
Myslíš, aby obrázek neměl název testujeme.php? Za header s content-type přidej další header.
header('Content-Disposition: inline; filename="nazevobrazku.png"'); |
||
10messi10 Profil * |
#17 · Zasláno: 25. 12. 2014, 16:25:19
Název obrázku je furt testujeme.php, nevěděl byste v čem je problém? :)
|
||
Taps Profil |
10messi10:
Mně funguje níže uvedený kod <?php header("Content-type: image/png"); header("Content-disposition: inline; filename=obrazek.png"); $png = imagecreatefrompng("tt.png"); $col = imagecolorallocate($png, 0, 255, 0); $text = "Testuji"; $font = "helvetica.ttf"; imagettftext($png, 35, 0, 75, 150, $col, $font, $text); imagepng($png); imagedestroy($png); ?> |
||
10messi10 Profil * |
#19 · Zasláno: 25. 12. 2014, 20:28:28
Použil jsem stejný kód, který jste sem vložil a mně to ukazuje furt src="domena/testujeme.php"
|
||
xROAL Profil |
#20 · Zasláno: 25. 12. 2014, 20:38:04
10messi10:
„Použil jsem stejný kód, který jste sem vložil a mně to ukazuje furt src="domena/testujeme.php"“ To je v celku pochopiteľné, keďže fyzicky sa obrázok skutočne nachádza na adrese "domena/testujeme.php". header("Content-disposition: inline; filename=obrazek.png"); ti zabezpečí, (alebo mal by zabezpečiť) že ak si užívateľ bude chcieť obrázok stiahnuť, jeho (prednastavený) názov bude "obrazek.png".
|
||
10messi10 Profil * |
#21 · Zasláno: 25. 12. 2014, 21:38:21
Dobře, díky. CO jsem se chtěl ještě zeptat, jde udělat aby ten vzniknutý obrázek se nahrál třeba do složky obrazky/ ?
|
||
Taps Profil |
#22 · Zasláno: 25. 12. 2014, 22:18:25
10messi10:
<?php /* header("Content-type: image/png"); header("Content-disposition: inline; filename=obrazek.png"); */ $path = './obrazky/obrazek_test.png'; $png = imagecreatefrompng("tt.png"); $col = imagecolorallocate($png, 0, 255, 0); $text = "Testuji"; $font = "helvetica.ttf"; imagettftext($png, 35, 0, 75, 150, $col, $font, $text); imagepng($png,$path); imagedestroy($png); ?> |
||
10messi10 Profil * |
#23 · Zasláno: 25. 12. 2014, 22:34:14
Přidal jsem tam tohle:
if (isset($_POST['submit'])) { header("Content-type: image/png"); header("Content-disposition: inline; filename=".$_POST['text'].".png"); $path = "./tt/".$_POST['text'].".png"; $png = imagecreatefrompng("tt.png"); $col = imagecolorallocate($png, 0, 255, 0); $text = $_POST['text']; $font = "helvetica.ttf"; imagettftext($png, 35, 0, 75, 150, $col, $font, $text); imagepng($png, $path); imagedestroy($png); } echo "<form method='POST'>"; echo "<input type='text' placeholder='text' name='text'>"; echo "<input type='submit' value='Ukaž' name='submit'>"; echo "</form>"; V rootu webu ten obrázek už je, ale tohle mi vrtá hlavou. :D |
||
Taps Profil |
#24 · Zasláno: 25. 12. 2014, 22:47:07
10messi10:
Pravděpodobně to bude tím že máš u funkce imagepng uvedenou cestu na kterou se má obrázek uložit. Tuto cestu však už zpětně nenačítáš do skriptu. Níže zasílám upravenou verzi skriptu <? if (isset($_POST['submit'])) { $path = "./path/".$_POST['text'].".png"; $png = imagecreatefrompng("tt.png"); $col = imagecolorallocate($png, 0, 255, 0); $text = $_POST['text']; $font = "helvetica.ttf"; imagettftext($png, 35, 0, 75, 150, $col, $font, $text); imagepng($png, $path); imagedestroy($png); echo '<img src="'.$path.'">'; } echo "<form method='POST'>"; echo "<input type='text' placeholder='text' name='text'>"; echo "<input type='submit' value='Ukaž' name='submit'>"; echo "</form>"; ?> |
||
10messi10 Profil * |
#25 · Zasláno: 26. 12. 2014, 01:10:38 · Upravil/a: 10messi10
Děkuji. Snad už poslední věc z mojí strany, chci na ten obrázek vypsat a následně uloži informace z DB, avšak uloží se obrázek bez textu mohl byste mi pomoci? :)
$result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_name='".$_GET['nick']."'"); if(mysql_num_rows($result)==1) { while($result2 = mysql_fetch_array($result)){ header("Content-type: image/png"); header("Content-disposition: inline; filename=".$_GET['nick'].".png"); $path = "./signatures/".$_GET['nick'].".png"; $png = imagecreatefrompng("tt.png"); $col = imagecolorallocate($png, 0, 255, 0); $text = $_GET['nick']; $font = "helvetica.ttf"; imagettftext($png, 35, 0, 75, 150, $col, $font, $result2['nick']); imagettftext($png, 35, 0, 75, 130, $col, $font, $result2['user_posts']); imagepng($png, $path); imagedestroy($png); } } else { echo "Uživatel neexistuje"; } Problém vyřešen, zapomněl jsem dá do složky, ve které je zdroj. soubor, soubor .ttf |
||
Časová prodleva: 3 měsíce
|
|||
RASik Profil * |
#26 · Zasláno: 18. 3. 2015, 21:50:33
Když už jsme u těch obrázků, snad můj dotaz souvisí, prosím o info, jak obrázek nezobrazit, ale uložit do souboru, čili:
- načtu si nějaký obrázek pomocí např. imagecreatefrom...() - nějakým způsobem ho změním, např. doplním do něj text, vodoznak nebo změním rozměry, atp.. - uložím do souboru, např. nový_obrázek.jpg můžete mně nasměrovat? Dík. |
||
Keeehi Profil |
#27 · Zasláno: 18. 3. 2015, 21:53:57
RASik:
Vždyť to dělá ten script v [#25]. Vytvoření je na řádku 7, modifikace 11 a 12 a uložení na řádku 13. |
||
RASik Profil * |
#28 · Zasláno: 18. 3. 2015, 22:45:56
Ježiši, to jsem vůl, používám Imagegif (apod.) tak dlouho jen pro zobrazení, že jsem zapomněl, že tam má parametr jména souboru... Omlouvám se a děkuji.
|
||
Časová prodleva: 9 let
|
0