Autor | Zpráva | ||
---|---|---|---|
Andy Profil * |
#1 · Zasláno: 31. 1. 2009, 00:45:38
Mam nasledovny kod na zobrazenie nahladu obrazku (obr_vnahlad.php):
if ((string)$_REQUEST["id"]<>'') $id=eregi_replace('[^0-9]', '', $_REQUEST['id']); else $id="46"; //vyber podla id $nacti=mysql_query("SELECT letak, letak_velkost, letak_typ, letak_nazov, letak_sirka, letak_vyska FROM ac_akce WHERE id = '$id' "); //vyber obr a info o obr z databaze if (!mysql_num_rows($nacti)==1) die ("Nemáme takový obrázek"); $row = mysql_fetch_assoc ($nacti); $typ=$row["letak_typ"]; $velikost=$row["letak_velkost"]; $nazov=$row["letak_nazov"]; $orig_width=$row["letak_sirka"]; $orig_height=$row["letak_vyska"]; //Hlavicky header("Content-type: $typ"); header("Content-length: $velikost"); header("Content-Disposition: attachement; filename=$nazov"); header("Content-Description: PHP Generated Data"); // Zacina operacia zmensenia obr $filename = $row["letak"]; /* keby sem dam echo $row["letak"] a funkciu ukoncim, obrazok sa zobrazi spravne, avsak chcem ho zmensit pre nahlad.*/ $percent = 0.1; // pomer zmensenia v percentach // definovanie novych rozmeov $newwidth = $orig_width * $percent; $newheight = $orig_height * $percent; $image_p = imagecreatetruecolor($newwidth, $newheight); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $newwidth, $newheight, $orig_width, $orig_height); // Zobrazenie imagejpeg($image_p, null, 100); //100% kvalita imagedestroy($image_p); No vysledok je len ten, ze sa zobrazi sice velkostou spravny ale iba cierny stvorec.. Teda nahlad jpg sa nezobrazi. Vidite v tom niekde chybu? Dakujem za radu.. |
||
Cargas Profil |
#2 · Zasláno: 31. 1. 2009, 01:44:20
imagedestroy($image_p);
imagedestroy($image); zkus to takhle , ale nejsem si vubec jist vysledkem |
||
Musilda Profil |
#3 · Zasláno: 31. 1. 2009, 05:44:24
Chyba bude asi v imagejpeg.
Zřejmě by tam mělo být imagejpeg($image_p, "název_nového_obrázku, 100); imagedestroy($image_p); a chybí : imagedestroy($image); jak píše Cargas |
||
AM_ Profil |
#4 · Zasláno: 31. 1. 2009, 09:53:02
To na 99% řešením nebude, obrázek stejně při ukončení PHP v paměti zanikne, a na výstup to těžko může mít nějaký vliv. Název_nového_obrázku by znamenal, že chceš obrázek uložit do souboru, nikoli na výstup, to máš asi dobře.
Zkusil jsi si vypsat různé proměnné (např. print_r($row))? Musíš na to samozřejmě na chvíli vyřadit header() funkce. A mám takový pocit, že content-length přidává server automaticky. |
||
Andy Profil * |
#5 · Zasláno: 31. 1. 2009, 19:26:05
„Zkusil jsi si vypsat různé proměnné (např. print_r($row))? Musíš na to samozřejmě na chvíli vyřadit header() funkce. A mám takový pocit, že content-length přidává server automaticky.“
Vypis: Array ( [letak] => ˙Ř˙ŕJF...... .......bł˙Ů [letak_] => [letak_typ] => image/jpeg [letak_nazov] => 200109_600.jpg [letak_sirka] => 593 [letak_vyska] => 841 ) Tu nechapem preco vypisal [letak_] => [letak_velkost] => 130593 Ale na spracovanie obrazku by to namalo mat vplyv. Nemoze to mat nieco spolocne s tym ako ukladam obr do databaze? Pouzivam upravny script z..vlastne neviem z kadial.. ale je tam taketo nieco pred ulozenim: // poslaný soubor splňuje všechna požadovaná kritéria a mohu ho nahrát do tabulky obrazek $binFile=str_replace(";", "", $binFile_tmp); // v tomto případě poněkud paranoidní bezpečnostní opatření - odstraním všechny možné výskyty ; z nahrávaného souboru $obrazek = addslashes(fread(fopen($binFile, "r"), filesize($binFile))); |
||
AM_ Profil |
#6 · Zasláno: 31. 1. 2009, 21:04:23
Hlavně jak jsem říkal, hlavička content-length ti bude působit jenom potíže, je zbytečná, protože apache jí posílá sám od sebe. Ty takhle pošleš velikost 0 (protože z nějakého důvodu, který je divný i mě, si jí to z databáze nevytáhne), takže prohlížeč teoreticky uzavře spojení hned po přečtení hlavičky.
|
||
Andy Profil * |
#7 · Zasláno: 1. 2. 2009, 09:37:29
nefunguje.. :-(
|
||
AM_ Profil |
#8 · Zasláno: 1. 2. 2009, 10:01:09
Ok. tak si vypiš všechny důležité proměnné, zkus skriptem jen načíst a zobrazit původní obrázek (bez copyresampled)... vždycky, když narazíš na chybu, musíš se jí snažit co nejvíc izolovat, hledat, na kterém řádku se to chová, jak nemá, a ne hledět na 40 řádků kódu s tím že "tam někde něco nefunguje"... Vypsal sis třeba newwidth a newheight?
|
||
Andy Profil * |
#9 · Zasláno: 3. 2. 2009, 14:03:39
„ vypiš všechny důležité proměnné, zkus skriptem jen načíst a zobrazit původní obrázek (bez copyresampled)..“
Skusal som.. Ak dam miesto obrazku z databaze $filename = $row["letak"] $filename = 'test.jpg'; Nema sa ten obrazok z databeze este nejako spracovat? Ked dam iba vypis echo $row["letak"] |
||
Andy Profil * |
#10 · Zasláno: 5. 2. 2009, 12:39:53
Naozaj nikoho nenapada ako to riesit?? :-(((
|
||
Časová prodleva: 15 let
|
0