Как уменьшить фактический размер изображения

herman

Новичок
Как уменьшить фактический размер изображения

Ситуация такая, имеется база данных с изображениями скажем 640x480. С добавлением и выводом изображений проблем нет, я вывожу все имеющиеся картики на одной странице, с уменьшенными размерами, я это делаю при помощи тэга <image with=100> и изображения становится с длиной 100 и актуальной высотой, НО фактический размер изображения в kB не уменьшается, т.е. время затрачиваемое на загрузку одного маленького изображения затрачивается столько же сколько и на большое, если бы картинок было б 1-3, то это еще нормально, а если их 100? Так вот существует ли простой способ, как уменьшить фактический размер исходного изображения?
 

herman

Новичок
Thanks,
загружать в фотошоп и уменьшать много ума не надо, эти действия должен выполнять скрипт.
 

Фанат

oncle terrible
Команда форума
почему?
какая разница, кто выполнит эти действия - фотошоп или скрипт?
 

herman

Новичок
Ну дак если картинок 500 штук, пусть лучше это скрипт делает, а я в это время лучше чай попью )
 

SunDrop

Помощник поисков. робота
Ну дак если картинок 500 штук, пусть лучше это скрипт делает, а я в это время лучше чай попью
ГЫ :)
Под фотошоп есть екшены. Загружаешь 500 штук и идешь пить чай :)
 

ProSait

Новичок
Для JPEG
<?
function imageresize($outfile,$infile,$percents,$quality) {
$im=imagecreatefromjpeg($infile);
$w=imagesx($im)*$percents/100;
$h=imagesy($im)*$percents/100;
$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("",$u,100,100); // $u - URL картинки, первая 100 - размер в процентах, вторая качество
?>
 

Marquis

Новичок
почему?
какая разница, кто выполнит эти действия - фотошоп или скрипт?
допустим есть рядовой манагер обновляющий контент на сайте, ему фотошоп ставить и учить им пользоваться или все же написать по человечески один раз скрипт ужимающий картинки и забыть про манагаеров?

хотя в использовании фотошопа думаю тоже есть своя фишка.
 

niidil

Новичок
// Функция создаёт уменьшеное изображение
// Вход: $src_path - путь к исходному изображению
// $dst_path - путь к уменьшеному изображению
// $dst_max_width - ширина уменьшеного изображения
// $dst_max_height - высота уменьшеного изображения
function create_thumbs($src_path, $dst_path, $dst_max_width, $dst_max_height)
{

// Получаем размеры и тип исходного изображения
$src_size_array = getimagesize($src_path);
$src_width = $src_size_array[0];
$src_height = $src_size_array[1];
$src_type = $src_size_array[2];

switch ($src_type)
{
case "1": $src = imagecreatefromgif($src_path); break;
case "2": $src = imagecreatefromjpeg($src_path); break;
case "3": $src = imagecreatefrompng($src_path); break;
default: break;
}
resize_image($src_path, $dst_max_width, $dst_max_height, $dst_width, $dst_height);
$dst = imagecreatetruecolor($dst_width, $dst_height);
// Уменьшаем изображение
imagecopyresampled($dst, $src, 0, 0, 0, 0, $dst_width, $dst_height, $src_width, $src_height);

// Сохраняем изображение в файл
imagejpeg($dst, $dst_path);
// Уничтожаем дескрипторы
imagedestroy($src);
imagedestroy($dst);

}

На входе могут быть gif, jpeg или png. На выходе будет jpeg.
 

Фанат

oncle terrible
Команда форума
просто выставка достижений народного хозяйства.
мне вот интересно, а понимают ли песатели, как работает этот код хотя бы наполовину? =)
 

С.

Продвинутый новичок
Автор оригинала: Marquis
допустим есть рядовой манагер обновляющий контент на сайте, ему фотошоп ставить и учить им пользоваться или все же написать по человечески один раз скрипт ужимающий картинки и забыть про манагаеров?
То есть твой манагер будет грузить на сервер 3-4 мегабайтные картинки, чтоб замечательный скрипт делал из них 10 килобайт?
 

dantistus

Новичок
Нет, он будет грузить туда картинки, а скрипт будет делать превьюхи из них. Это нравится клиентам ("Вау, нам не надо руками самим делать!"). Если человеку надо, чтобы превьюху можно было загрузить самому - он об этом так и скажет.

niidil
Твоя функция будет сжимать картинки непропорционально:

PHP:
$dst_max_width=100;
$dst_max_height=100;
/*1024*768 -> 100*100
60*60 ->100*100
16000*200 -> 100*100
i t.d.*/
 
Сверху