[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: уменьшение размера картинки
fate
полазев в сети я нашел такой код :

$src_file = 'yu.jpg';
$dst_file = $src_file;
$src_im = imagecreatefromjpeg($src_file);
$width = imagesx($src_im);
$height = imagesy($src_im);
$dst_im = imagecreatetruecolor($width/2, $height/2);
imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $width/2, $height/2, $width, $height);
imagejpeg($dst_im, $dst_file);
imagedestroy($src_im);
imagedestroy($dst_im);

это пример скрапта который уменьшает фото в двое, а как мне сделать что бы размер задавался 100х100 px или 60х60 px?? Не завися от исходного размера фотки. Ну или сделать цикл который проверял бы изображение фотки и делал бы этот скрипт пока размер картинки не достиг бы нормы.

P.S.
И объясните мне нормальным языком значение imagecreatefromjpeg[i]
я посмотрел в справочнике, там написанно возвращает идентификатор изображения. Ну не вига не понятно ((



Спустя 9 часов, 29 минут, 36 секунд (16.02.2009 - 09:25) Viking написал(а):
imagecreatefromjpeg создает изображение из файла


imagecopyresampled меняет размер изображения в соответствии с аргументами, если надо 100х100 то
$dst_im = imagecreatetruecolor(100, 100);
imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, 100, 100, $width, $height);

Спустя 2 часа, 59 минут, 6 секунд (16.02.2009 - 12:24) Guest написал(а):
я размерами я разобрался.

как теперь пне соеденить два скрипта?

if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],"C:/WebServers/home/localhost/www/ru/image/com/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Имя файла: ".$_FILES["filename"]["name"]);
$img = $_FILES['filename']['name'];

}
else {
echo("Ошибка загрузки файла");

это загрузка фото на сервер


а это уменьшение картинки
если я указываю имя файла $img то он не находит файл и ругается ((

$src_file = $img;
$dst_file = $src_file;
$src_im = imagecreatefromjpeg($src_file);
$width = imagesx($src_im);
$height = imagesy($src_im);
$dst_height = $width/$height;
$dst_im = imagecreatetruecolor(60, 60/$dst_height);
imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, 60, 60/$dst_height, $width, $height);
imagejpeg($dst_im, $dst_file);
imagedestroy($src_im);
imagedestroy($dst_im);

Спустя 4 часа, 40 минут, 56 секунд (16.02.2009 - 17:05) pasha написал(а):
есть хорошая функция:

function imageresize($outfile,$infile,$neww,$newh,$quality) {
$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);
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));

imagejpeg($im1,$outfile,$quality);
imagedestroy($im);
imagedestroy($im1);
}


вызов:
imageresize('../img_ob/min/'.$fn_name,'../img_ob/'.$fn_name,150,150,100); //например так старый файл, новый файл, ш, в, качество.
+ чмоды
я только не понял, нужно создать файл 100х100 например, и на него нанести слой нового изображения,которое бедет вписанно в 100х100??? или просто вписать в нужный размер?

Спустя 1 год, 1 месяц, 12 дней, 23 часа, 24 минуты, 6 секунд (29.03.2010 - 15:29) UnWind написал(а):
pasha
Спасибо за функцию, очень помогла! smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.