Ребят, будьте добры помогите написать наипростейший скрипт. Поддержка форматов только: jpeg, jpg, gif, png Загружаю изображение, создается миниатюра шириной в 100px и сохраняется в нужную дирректорию . Честно говоря бьюсь над этим. Загружать файлы не проблема, но создать миниатюру.. Рыскаю по просторам интернета, валяются куски кода, но некоторые не внушают доверия, другие слишком большие и нужно колеса откручивать)
для жпег: PHP: <?php function imageresize($infile, $outfile, $neww, $newh, $quality = 75) { $im=imagecreatefromjpeg($infile); $k1=$neww/imagesx($im); $k2=$newh/imagesy($im); $k=$k1>$k2?$k2:$k1; $w=intval(imagesx($im)*$k); $h=intval(imagesy($im)*$k); $im1=imagecreatetruecolor($w,$h); $bckgrn = imagecolorallocate($im1, 249, 234,193); imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im)); imagejpeg($im1, $outfile, $quality); imagedestroy($im); imagedestroy($im1); }
PHP: <? function resize($file_input, $file_output, $w_o, $h_o, $percent = false) { list($w_i, $h_i, $type) = getimagesize($file_input); if (!$w_i || !$h_i) { echo 'Невозможно получить длину и ширину изображения при уменьшении'; return; } $types = array('','gif','jpeg','png'); $ext = $types[$type]; if ($ext) { $func = 'imagecreatefrom'.$ext; $img = $func($file_input); } else { echo 'Некорректный формат файла'; return; } if ($percent) { $w_o *= $w_i / 100; $h_o *= $h_i / 100; } if (!$h_o) $h_o = $w_o/($w_i/$h_i); if (!$w_o) $w_o = $h_o/($h_i/$w_i); $img_o = imagecreatetruecolor($w_o, $h_o); imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i); if ($type == 2) { return imagejpeg($img_o,$file_output,100); } else { $func = 'image'.$ext; return $func($img_o,$file_output); } } ?> это я когда-то нарыл когда искал как сделать кроп меня устраивает и по дефолту юзаю
ам , ну resize('урл изображения','урл нового изображения','300','',''); получим равномерно-уменьшенный имг шириной 300пх
img.php PHP: <?php error_reporting(E_ALL); $path = isset($_GET['p'])? $_GET['p'] : ''; $newwidth = isset($_GET['w'])? $_GET['w'] : 0; $newheight = isset($_GET['h'])? $_GET['h'] : 0; if (!file_exists($path)) die ("файл не обнаружен"); $ext = strtolower(pathinfo($path, PATHINFO_EXTENSION)); if ($ext == 'jpg' || $ext == 'jpeg') $img = imagecreatefromjpeg($path); elseif ($ext == 'gif') $img = imagecreatefromgif($path); elseif ($ext == 'png') $img = imagecreatefrompng($path); else die("Неподдерживаемый формат"); $size = getimagesize($path); $width = $size[0]; $height = $size[1]; if (!($newwidth && $newheight)) { if ($newwidth) $newheight = (int)($height * ($newwidth / $width)); elseif ($newheight) $newwidth = (int)($width * ($newheight / $height)); else { $newwidth = 100; $newheight = 100; } } $im = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($im, $img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); header("Content-type: {$size['mime']}"); if ($ext == 'jpg' || $ext == 'jpeg') { imagejpeg($im); } if ($ext == 'gif') { imagegif($im); } if ($ext == 'png') { imagepng($im); } imagedestroy($im); ?> применение HTML: <img src="img.php?p=1.jpg&w=100&h=100"/> или HTML: <img src="img.php?p=1.jpg&w=100"/> или HTML: <img src="img.php?p=1.jpg&h=100"/>
омг с чего не мое то) просто мне нужно через input type file загрузить только изображение и урезать) ну да мб я вопросов и задаю много глупых, но я хочу все сделать правильно и чтобы в дальнейшем ошибок не совершать)
Вот проблемка первая. Мне нужно скажем пережать картинку до 500px. Но вот если изображение скажем 300px то оно тянется до 500px. Желательно если 300px то так и оставить) Можно ведь как то сделать сравнение?