Autor Zpráva
Watchick
Profil *
Dobrý den, chtěl bych se zeptat, mám kód:

header("Content-type: image/png");
$user = $_GET['user'];
$im = imagecreatefrompng("logo.png");
$user_width = imagettfbbox(9, 0, "tahoma.ttf", $user);
$x_value = (200 - ($user_width[2] + 101));
$color = imagecolorallocate($im, 165, 164, 164);
imagettftext($im, 8, 0, $x_value, 14, $color, "tahoma.ttf", $user);
imagepng($im);
imagedestroy($im);

Kde $user je text, který se do obrázku napíše.
Dá se nějak udělat aby se obrázek uložil do složky "loga" s číslem, které bude postupně nebíhat? (1.png, 2.png)? D9ky moc za rady
matak
Profil
k tomu nabíhání čísel, bych doporučil tento článek

http://www.webfaq.cz/clanek/Jak-v-PHP-ziskat-unikatni-nazev-souboru-kt ery-v-adresari-neexistuje

uložení souboru pak probíhá připojením druhého argumentu k funkcni imagepng, tedy imagepng($im, "../cesta_k_souboru.txt");

viz. http://cz2.php.net/manual/en/function.imagepng.php
Watchick
Profil *
ok díky moc z toho manuálu jsem toho moc nepochopil neni tu moc příkladů, ale jdu zkusit zaměnit ty 2.. díky moc
Watchick
Profil *
ještě k tomu:
   1.  <?
   2. class File {
   3. public function __construct() { }   
   4. public static function getOriginalName($path, $file) {
   5. $i=0;
   6. while (file_exists($path.$file)) {
   7. $pos = strrpos($file, ".");
   8. $ext = strtolower(substr($file , $pos+1));
   9. if (preg_match("/.+-CID(d+).[a-zA-Z]{3,4}$/", $file)) {
  10. $file = preg_replace("/(.+)(-CIDd+)(.[a-zA-Z]{3,4}$)/", "$1-CID".$i, $file);
  11. } elseif (preg_match("/.+(.)[a-zA-Z]{3,4}$/", $file)) {
  12. $file = preg_replace("/(.+)(.[a-zA-Z]{3,4})$/", "$1-CID".$i, $file);
  13. } else {
  14. $image = "FILE-CID".$i.".".$ext;
  15. }
  16. $i++;
  17. $file = $file.".".$ext;
  18. }
  19. return $file;
  20. }
  21. }
  22. ?>

co má být na začátku a na konci ve $file?
Watchick
Profil *
Jo zatím to mám v takovéto formě:
html,. který na logo.php odkazuje
<form method="post">
Nazev: <input name="user" type="text" size="20" class="textbox"> <input type="submit" class="button" value="Create">
<br><br><input type="image" border="0" width="200" height="20" src="logo/logo.php?user=<?php echo $_REQUEST['user'] ?>">
</form>

logo.php
<?php
header("Content-type: image/png");
$user = $_GET['user'];
$file = $user . ".png";
class File {
public function __construct() { }   
public static function getOriginalName($path, $file) {
$i=0;
while (file_exists($path.$file)) {
$pos = strrpos($file, ".");
$ext = strtolower(substr($file , $pos+1));
if (preg_match("/.+-CID(d+).[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(-CIDd+)(.[a-zA-Z]{3,4}$)/", "$1-CID".$i, $file);
} elseif (preg_match("/.+(.)[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(.[a-zA-Z]{3,4})$/", "$1-CID".$i, $file);
} else {
$image = "FILE-CID".$i.".".$ext;
}
$i++;
$file = $file.".".$ext;
}
return $file;
}
}
$im = imagecreatefrompng($file);
$user_width = imagettfbbox(9, 0, "tahoma.ttf", $user);
$x_value = (200 - ($user_width[2] + 101));
$color = imagecolorallocate($im, 165, 164, 164);
imagettftext($im, 8, 0, $x_value, 14, $color, "tahoma.ttf", $user);
imagepng($im, "soubory/$file"); 
imagedestroy($im);
?>

jinak tady to je
matak
Profil
co má být na začátku a na konci ve $file?

na začátku ve $file je název souboru, např. pokus.txt, pokud skript nalezne soubor pokus.txt v adresari vrati vysledek pokus-CID1.txt, při dalším opakování vrátí pokus-CID2.txt

k imagepng, není co řešit není potřeba číst manuál, k tomu, aby se obrázek uložil do souboru, stačí zapsat imagepng($im, "/cesta/k/souboru/nazevsouboru.png");

a on se uloží
matak
Profil
každopádně pokud nechci používat objekty a to není nutné stačí z celého kódu vytáhnout jen

$i=0;
while (file_exists($path.$file)) {
$pos = strrpos($file, ".");
$ext = strtolower(substr($file , $pos+1));
if (preg_match("/.+-CID(d+).[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(-CIDd+)(.[a-zA-Z]{3,4}$)/", "$1-CID".$i, $file);
} elseif (preg_match("/.+(.)[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(.[a-zA-Z]{3,4})$/", "$1-CID".$i, $file);
} else {
$image = "FILE-CID".$i.".".$ext;
}
$i++;
$file = $file.".".$ext;


pokud chci použít objekty používám takto:

$validninazevsouboru = File::getOriginalName("cesta/k/soboru", "logo.png");
Watchick
Profil *
díky, už je mi to o dost jasnější,ale stále nechápu, proč se tady opakují nejaké .txt soubory, kdyz se jedná o obrázek?
matak
Profil
to byl přece jen příklad, je celkem jedno co tam dáš, název souboru je libovolný
Watchick
Profil *
ok, takže
header("Content-type: image/png");
$user = $_GET['user'];
$file = $user . ".png";
$i=0;
while (file_exists($path.$file)) {
$pos = strrpos($file, ".");
$ext = strtolower(substr($file , $pos+1));
if (preg_match("/.+-CID(d+).[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(-CIDd+)(.[a-zA-Z]{3,4}$)/", "$1-CID".$i, $file);
} elseif (preg_match("/.+(.)[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(.[a-zA-Z]{3,4})$/", "$1-CID".$i, $file);
} else {
$image = "FILE-CID".$i.".".$ext;
}
$i++;
$file = $file.".".$ext;
}
$im = imagecreatefrompng($file);
$user_width = imagettfbbox(9, 0, "tahoma.ttf", $user);
$x_value = (200 - ($user_width[2] + 101));
$color = imagecolorallocate($im, 165, 164, 164);
imagettftext($im, 8, 0, $x_value, 14, $color, "tahoma.ttf", $user);
imagepng($im, "soubory/$file"); 
imagedestroy($im);

ale stále to nějak nefunguje
matak
Profil
myslím, že nevíš co se v tom skriptu děje, popis v bodech co nejstručněji co chceš udělat
Watchick
Profil *
aha :-)
ok takže to základní dělalo tohle:
text, který se poslal se zapsal do obrázku, ten se zobrazil, ale pouze zobrazil nikam se neuložil
a já bych potřeboval:
aby se to nejen že zobrazilo, ale také uložilo se unikátním názvem do složky "soubory"
a stránka pak mohla vypsat BBcode pro fóra (fungovalo by to jako vytvoření reklamy s podpisem na propagaci našeho webu...)
je to dost stručné a srozumitelné? jo a díky za to, že se mi snažíš pomoci, většina uživatelů tady moc vřelých není, díky moc
matak
Profil
problém je, že si nejsem úplně jist co chceš, zkusme jednu věc po druhé,

1. jak uložit obrázek do souboru?

imagepng($im, "názevsouboru.png");

to je jasné?

co dál nefunguje?
Watchick
Profil *
No to jsem pochopil :-) otázkou mi ale zůstává pro, když mam
header("Content-type: image/png");
$user = $_GET['user'];
$file = $user . ".png";
$i=0;
while (file_exists($path.$file)) {
$pos = strrpos($file, ".");
$ext = strtolower(substr($file , $pos+1));
if (preg_match("/.+-CID(d+).[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(-CIDd+)(.[a-zA-Z]{3,4}$)/", "$1-CID".$i, $file);
} elseif (preg_match("/.+(.)[a-zA-Z]{3,4}$/", $file)) {
$file = preg_replace("/(.+)(.[a-zA-Z]{3,4})$/", "$1-CID".$i, $file);
} else {
$image = "FILE-CID".$i.".".$ext;
}
$i++;
$file = $file.".".$ext;
}
$im = imagecreatefrompng($file);
$user_width = imagettfbbox(9, 0, "tahoma.ttf", $user);
$x_value = (200 - ($user_width[2] + 101));
$color = imagecolorallocate($im, 165, 164, 164);
imagettftext($im, 8, 0, $x_value, 14, $color, "tahoma.ttf", $user);
imagepng($im, "názevsouboru.png"); 
imagedestroy($im);

tak to nefunguje?
matak
Profil
co přesně ti nefunguje řešme jednu věc po druhé, napiš další věc co nefunguje nebo hlášku kterou ti to pošle
Watchick
Profil *
jinak tady to je žádnou hlášku to neukazuje, akorát to nefunguje
matak
Profil
popiš body co a jak má fungovat!

1.
2.
3.
4.

atd.
matak
Profil
nebo mi napiš na icq, a pak sem dej až výsledek

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0