zmensovani obrazku
6 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Pro ty co se treba nudej. zvladate nekdo tenhle script: zjisteni - kdyz ne .jpg tak chyba (neni podminkou) zmenseni (aby to nedeformovalo - tzn. aby to z obr 200x100 neudelalo 100x100. myslim hlavne pomer fotek 2:3) ulozeni na disk? Dik moc
-
Nedávno to tu bylo. Používám tento skript: Konstanta GAL_THUMBSIZE určuje největší rozměr náhledu. function createthumb($s_file,$t_file,$kvalita=75){ if (!($m_zdrojobrazek = @ImageCreateFromJPEG($s_file))) return false; $m_zdrwidth=imagesx($m_zdrojobrazek); $m_zdrheight=imagesy($m_zdrojobrazek); $m_vyswidth = $m_zdrwidth>=$m_zdrheight ? GAL_THUMBSIZE : GAL_THUMBSIZE/$m_zdrheight*$m_zdrwidth; $m_vysheight = $m_zdrwidth<$m_zdrheight ? GAL_THUMBSIZE : GAL_THUMBSIZE/$m_zdrwidth*$m_zdrheight; $m_vyslobrazek = imagecreatetruecolor($m_vyswidth,$m_vysheight); imagecopyresampled($m_vyslobrazek,$m_zdrojobrazek,0,0,0,0,$m_vyswidth,$m_vysheight,$m_zdrwidth,$m_zdrheight); ImageJPEG($m_vyslobrazek,$t_file,$kvalita); ImageDestroy($m_vyslobrazek); ImageDestroy($m_zdrojobrazek); return true; }
-
Možná by ti pomohl tenhle script, vytáhni si z něj co potřebuješ. Zmenší obrázek ( ?img=*.jpg) se zachováním poměru stran. <? dl("php_gd.dll"); Header("Content-type: image/jpeg"); Header("Expires: ".GMDate("D, d M Y H:i:s",time()+60*60*24)." GMT"); $width=100; $height=100; /* cílové velikosti*/ $img=ImageCreate($width,$height); $bila=ImageColorAllocate($img,255,255,255); ImageFill($img,0,0,$bila); /* nový obrázek (náhled), bílé pozadí*/ $path=$_GET["path"]; $info=getimagesize($path); $size=Round(filesize($path)/1024); /* údaje o orginálu*/ if($info[0]<$info[1]): $w=$info[0]/$info[1]*$width; $h=$height; $top=0; $left=($width-$w)/2; else: $w=$width; $h=$info[1]/$info[0]*$height; $top=($height-$h)/2; $left=0; endif; imagecopyresized($img,@imagecreatefromjpeg($path),$left,$top,0,0,$w,$h,$info[0],$info[1]); /* $cerna=ImageColorAllocate($img,0,0,0); $bila=ImageColorAllocate($img,255,255,255); imagefilledrectangle($img,0,$height-30,$width,$height-15,$bila); $text=$info[0]."x".$info[1].", $size kB"; ImageString($img, 3, 10, $height-30, $text, $cerna); /* zároveň do obrázku vypíše údaje o něm*/ ImageJpeg($img,'',80); ?>
-
bohužel ani jeden z těch skriptů nemůžu rozchodit... našel jsem jinej: tady je ale zase problém s kvalitou, je dost otřesná... function resize($cur_file, $copy_file, $widthto, $heightto, $quality, $show, $interlace) { include "conf.tex"; $ssize=GetImageSize($cur_dir."/".$cur_file); //get size $end = Explode(".", $cur_file); //oddìlení pøípony....nyní je pøípona pøístupná v promìnné $end[1] if ((strtolower($end[1]) == "jpg") || (strtolower($end[1]) == "jpeg")): $fp = imagecreatefromjpeg ($cur_dir."/".$cur_file); $fx = imagecreate ($widthto,$heightto-1); imagecopyresized ($fx,$fp,0,0,0,0,$widthto,$heightto,$ssize[0],$ssize[1]); if ($interlace == "on"): ImageInterlace($fx , 1); endif; imageJPEG ($fx, $copy_file, $quality); Copy($copy_file, $copy_dir."/".$copy_file); unlink($copy_file); ImageDestroy($fp); ImageDestroy($fx); $kilo = Round(FileSize($copy_dir."/".$copy_file)/1024, 2); echo "<div align=\"center\"><b>".$cur_file." => ".$copy_file."</b><br><b>".$widthto." X ".$heightto." px ; ".$kilo." Kb</b><br></div>"; if ($show == "on"): echo "<div align=\"center\"><img src=\"resized/".$copy_file."\"><br><br></div>"; endif; elseif (strtolower($end[1]) == "png"): If ( @$fp = imagecreatefrompng ($cur_dir."/".$cur_file) ): $fx = imagecreate ($widthto,$heightto-1); imagecopyresized ($fx,$fp,0,0,0,0,$widthto,$heightto,$ssize[0],$ssize[1]); if ($interlace == "on"): ImageInterlace($fx , 1); endif; imagePNG ($fx, $copy_file, $quality); Copy($copy_file, $copy_dir."/".$copy_file); unlink($copy_file); ImageDestroy($fp); ImageDestroy($fx); $kilo = Round(FileSize($copy_dir."/".$copy_file)/1024, 2); echo "<div align=\"center\"><b>".$cur_file." => ".$copy_file."</b><br><b>".$widthto." X ".$heightto." px ; ".$kilo." Kb</b><br></div>"; if ($show == "on"): echo "<div align=\"center\"><img src=\"resized/".$copy_file."\"><br><br></div>"; endif; else: echo "<div align=\"center\" style=\"color: red;\">Your version of GD library doesn't support PNG images.<br>Image <b>".$cur_file."</b> wasn't resized. Sorry.<br><br></div>"; endif; endif; } if ($resize == "OK"): //DL("php_gd.dll"); /*******************load DLL******************/ include "conf.tex"; $dp = OpenDir($cur_dir); //nastaveni adresare - vraci ukazatel $dp $i = 0; $soubor[$i] = ReadDir($dp); while ($soubor[$i] == true): //vypis vsech souboru v nastavenem adresari $pis = ReadDir($dp); $i++; $soubor[$i] = $pis; //$soubor[2] je prvnim souborem v adresari endwhile; //zachována promenna $i, ktera je pocet souboru +2 CloseDir($dp); for ($y=2; $y<=$i-1; $y++): $size[$y] = GetImageSize($cur_dir."/".$soubor[$y]); $width = $size[$y][0]; $height = $size[$y][1]; if ($new_width <= $new_height): $widthto = $new_width; $ratio = $width/$widthto; $heightto = Ceil($height/$ratio); else: $heightto = $new_height; $ratio2 = $height/$heightto; $widthto = Ceil($width/$ratio2); endif; $outfile = Str_Replace(" ", "_", $soubor[$y]); $outfile = strtr($outfile, "áèïìéíòøšùúýžüäëö", "acdeeinrstuuyzuaeo"); $outfile = StrToLower($outfile); resize($soubor[$y], "small_".$outfile, $widthto, $heightto, $quality, $show, $interlace); endfor; endif; ?>
-
ty jo to je trosku slozity ne? pomoci gd knihovny to de docela jednoduse pak akorat udelas vystup v php jako obr a parametry width a heigth das ty zmenseny... koukni se do manualu php tam je to primo popsany... u gd knihovny
-
no našel jsem ještě něco jinýho a lepšího... $imgfile = '6.JPG'; $percent = 0.2; header('Content-type: image/jpeg'); list($width, $height) = getimagesize($imgfile); $newwidth = $width * $percent; $newheight = $height * $percent; $thumb = ImageCreateTrueColor($newwidth,$newheight); $source = imagecreatefromjpeg($imgfile); imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg($thumb); samostatně to funguje jedna báseň když to ale chci spojit s uploadem tak to prostě nejde... nějaké návrhy?