Chtěl bych při uploadu hned s nahrávaným obrázkem vytvořit i jeho náhled.
ALE pokud použiju skripty končící funkcí např. ImageGIF nebo ImageJPEG píše to Call to undefined function.
Tak jsem přidal řádek k otevření DLL knihovny pro práci s obrázky, ale ta je pro změnu zakázána - dl();
Poraďte pls třeba i nějakou funkci, která vytvoří náhled obrázku pouze do vyrovnávací paměti automaticky, jestli něco takovýho existuje.
Díky za odpověď...
Takto zmenšíš a zároveň uložíš obrázek ve formátu JPEG:
$in_name = $absolutniCesta."obrazky_full/".$nazevObrazku;
$out_name = $absolutniCesta."obrazky_small/".$novyNazevObrazku;
$in_size = getimagesize($in_name);
$out_size[0] = 60; // sirka
$out_size[1] = 45; // vyska
$in = ImageCreateFromJpeg($in_name);
$out = ImageCreateTrueColor($out_size[0],$out_size[1]);
ImageCopyResampled($out,$in,0,0,0,0,$out_size[0],$out_size[1],$in_size[0],$in_size[1]);
ImageJpeg($out,$out_name,100);
ImageDestroy($in);
ImageDestroy($out);
Hodnoty proměnných si snad doplníš.
Zas tak blbej nejsem, abych si nezměnil proměnný.
Ale uctivě děkuji, protože to funguje.
Jen ještě jeden dotaz: Co určuje třetí parametr funkce ImageJpeg($out,$out_name,100); Kvalitu?
jo. standardni hodnota je 70 nebo 75, ta vetsinou postacuje.
kdyz probehne tenhle script tak mi to ulozzi na $absolutniCesta."obrazky_small/".$novyNazevObrazku;
move_uploaded_file() ?
ja to mam takhle.. na localu mi to chodi .. ale na wz ne... adresare mam na 777
function image_resize($obr_puvodni, $obr_zmenseny) {
global $image_info ;
$image_info = getimagesize($obr_puvodni);
switch ($image_info[2]) {
case 1: $img = imagecreatefromgif($obr_puvodni); break;
case 2: $img = imagecreatefromjpeg($obr_puvodni); break;
case 3: $img = imagecreatefrompng($obr_puvodni); break;
default: return false;
}
$width = $_POST[width];
$height = $_POST[height];
$img_2 = imagecreatetruecolor($width, $height);
imagecopyresampled($img_2, $img, 0, 0, 0, 0, $width, $height, $image_info[0], $image_info[1]);
if ($image_info[2] == 2) {
return imagejpeg($img_2, $obr_zmenseny, $_POST[q]);
}
}
$nahled = "prijato/ahoj." . pathinfo($_FILES["obr"]["name"], PATHINFO_EXTENSION);
image_resize($_FILES["obr"]["tmp_name"], $nahled);
if (isset( $chyba_resize )) echo $chyba_resize;
?>
<form enctype="multipart/form-data" action="obr.php" method="post">
<p><b>Soubor:</b> <input type="file" name="obr" /></p>
h<input type="text" name="height" />w<input type="text" name="width" />q max 100<input type="text" name="q" />
<input type="submit" name="odeslat_bal" value="Odeslat" /> <br /><br />
</form><!-- Konec formuláře -->
error_reporting(E_ALL);
jako uplne prvni radek PHP
a ECHO vsechny promenne, treba $width
NEvypsalo mi to nic...
pls.. poradte nekdo co mam spatne... uz jsem prosel mraky prizpevku.. a porad nic..
Notice: Undefined variable: img in /3w/wz.cz/h/hokejparta/zkousky/obr.php on line 6
Notice: Undefined variable: nahled in /3w/wz.cz/h/hokejparta/zkousky/obr.php on line 7
Notice: Undefined variable: obr_puvodni in /3w/wz.cz/h/hokejparta/zkousky/obr.php on line 8
Notice: Undefined variable: obr_zmenseny in /3w/wz.cz/h/hokejparta/zkousky/obr.php on line 9
Notice: Undefined variable: image_info in /3w/wz.cz/h/hokejparta/zkousky/obr.php on line 10
Notice: Undefined variable: img_2 in /3w/wz.cz/h/hokejparta/zkousky/obr.php on line 11
Notice: Undefined variable: widht in /3w/wz.cz/h/hokejparta/zkousky/obr.php on line 12
Ono ten skript taky není nic moc. Zkusil jsem ti sepsat jinej, ale neměl jsem čas ho otestovat:
<?php
if(!empty($_FILES)) {
if(!$_FILES['image']['error']) {
if(upload_image($_FILES)) echo '<span style="color: green;">Soubor uložen</span>';
else echo '<span style="color: red;">CHYBA při uploadu souboru</span>';
} else {
echo '<span style="color: red;">CHYBA při uploadu souboru</span>';
}
}
function upload_image($_FILES) {
switch(strtolower($_FILES['image']{'type'})) {
case "image/png": $source = imagecreatefrompng($_FILES['image']{'tmp_name'}); break;
case "image/jpg": $source = imagecreatefromjpeg($_FILES['image']{'tmp_name'}); break;
case "image/jpeg": $source = imagecreatefromjpeg($_FILES['image']{'tmp_name'}); break;
case "image/gif": $source = imagecreatefromgif($_FILES['image']{'tmp_name'}); break;
}
if(@!$source) echo '<span style="color: red;">Typ souboru není podporován!</span>';
else {
$newX = 100; // výška \
// > nového obrázku
$newY = 100; // šířka /
$target = './images'; // složka pro nový obrázek
list($origX, $origY) = getimagesize($_FILES['image']{'tmp_name'});
$thumb = imagecreatetruecolor($newX, $newY);
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newX, $newY, $origX, $origY);
if(imagepng($thumb, $target . DIRECTORY_SEPARATOR . $_FILES['image']{'name'} . '.png')) return true;
else return false;
}
}
?>
<form enctype="multipart/form-data" method="post"><p><b>Soubor:</b> <input type="file" name="image"></p><input type="submit" value="Odeslat"></form>
Možná že to bude fungovat hned napoprvý ;)
PS: zbytečně nezdvojuj proměnný, zvyšuje se riziko, že někde uděláš botu, nebo že se ti do toho začne navážet register_globals.
Dodatek: tak jsem to tak zběžně vyzkoušel a dokonce to i funguje :)
BTW: JPEG není jedniný (a ani zdaleka nejlepší) grafický formát pro použití na webu
--BTW: JPEG není jedniný (a ani zdaleka nejlepší) grafický formát pro použití na webu
jj.. tohle byl zacatek rozpracovaneho scriptu na kterem jsem se trocu ucil ...:-)
Jinak kazdopane diky...
diky tvemu scriptu jsem si dokazal svuj upravit na fachcici vec... tak jeste jednou dik
DAwid (hokejparta.wz.cz)
tak to vidis sam, 7 chyb a vsechno nedefinovane promenne.
Tj., kdyz mas treba $img=-1 || $img=undefined, tak z toho ti ten script moc nevykouzli, ze?