Autor Zpráva
g3rtrud
Profil *
Zdravím, je podla vás vhodné vytvárať miniatúry priamo pri načítaní stránky? mám na mysli niečo takéto:
<?php
function onlineresize ($subor,$NovaSirka,$NovaVyska) {
$image = imagecreatefromjpeg($subor);

$sirka = imagesx($image);
$vyska = imagesy($image);

if ($NovaVyska==0){
$pomer=$sirka/$vyska;
$NovaVyska=$NovaSirka/$pomer;
}else {
$NovaSirka=$NovaSirka;
$NovaVyska=$NovaVyska;
}

$image_zmenseny = imagecreatetruecolor($NovaSirka, $NovaVyska);
imagecopyresampled($image_zmenseny, $image, 0, 0, 0, 0, $NovaSirka, $NovaVyska, $sirka, $vyska);

// Zobrazíme zmenšeninu
header('Content-type: image/jpeg');
imagejpeg($image_zmenseny);
}
//zavolame funkciu a zobrazime obrazok
onlineresize($_GET['obrazok'],$_GET['sirka'],$_GET['vyska']);
?>

odkaz na obrázok by vyzeral takto: <img src="resize.php?obrazok=obr.jpg&amp;sirka=200&amp;vyska=150"/>
takto by bolo zmenšených asi 10 obrázkov na jednej stránke. Vytvárať klasicky miniatury by bolo komplikované tak sa chcem spýtať či by takéto riešenie bolo veľkou záťažou pre server.
Keeehi
Profil
A je takový problém, tu zmenšeninu uložit?

<?php
function onlineresize ($subor,$NovaSirka,$NovaVyska) {
$image = imagecreatefromjpeg($subor);
 
$sirka = imagesx($image);
$vyska = imagesy($image);
 
if ($NovaVyska==0){
$pomer=$sirka/$vyska;
$NovaVyska=$NovaSirka/$pomer;
}else {
$NovaSirka=$NovaSirka;
$NovaVyska=$NovaVyska;
}
 
$image_zmenseny = imagecreatetruecolor($NovaSirka, $NovaVyska);
imagecopyresampled($image_zmenseny, $image, 0, 0, 0, 0, $NovaSirka, $NovaVyska, $sirka, $vyska);

imagejpeg($image_zmenseny,"zmenseniny/".$NovaSirka."x".$NovaVyska."-".$subor);

} 
// Zobrazíme zmenšeninu
header('Content-type: image/jpeg');

if(!file_exist("zmenseniny/".$_GET['sirka']."x".$_GET['vyska']."-".$_GET['obrazok'])) {
    onlineresize($_GET['obrazok'],$_GET['sirka'],$_GET['vyska']);
}

readfile($_GET['sirka']."x".$_GET['vyska']."-".$_GET['obrazok']);
?>

PS vstupům od uživatele se nedá věřit!
g3rtrud
Profil *
ten kód mi nefunguje, nevypíše žiadnu chybu, nič...
Keeehi
Profil
Žádnou chybu nevypíše, protože se to bere jako obrázek. Zakomentuj header a chyba by se měla objevit.
g3rtrud
Profil *
Warning: imagejpeg() [function.imagejpeg]: Unable to open './miniatury/' for writing

Toto mi vypísal tento aj iný skript ktorý som skúšal.


edit: práva adresára sú nastavené na 777
Keeehi
Profil
Problém bude v tom, že Vám z cesty nějak vypadlo jméno souboru.
g3rtrud
Profil *
Ďakujem, opravil som to a už to funguje. Len keď to dám do while a chcem aby sa zmenšilo niekolko obrázkov naraz, tak vypíše chybu:
Cannot redeclare createthumb() (previously declared in...


Stačilo vybrať funkciu pred while, všetko už funguje ako má, ďakujem za pomoc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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