Дегенератор идей
С нами с 09.11.03
Сообщения: 2116
Рейтинг: 986
|
Добавлено: 17/03/05 в 21:32 |
Долбанутый спон выкладывает картинки с разрешением 3000x3000. Бред.
Задача: уменьшить все картинки в директории у меня на серваке до 600 пикселей по большей стороне.
Знаю, что GD это должен делать с легкостью.
Если, кто посоветует фришный скрипт или дешевый и ненавороченный платный, или даст дельный совет буду предельно благодарен.
Нашел то, что надо на -ttp://services.xyzsite.ru/ Но со мной так никто и не связывается по поводу оплаты, а надо срочно.
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 17/03/05 в 23:14 |
Код: |
$max_width=ширина тумбы;
$max_height=высота тумбы;
$image=путь к оригиналу ;
$thumbshere=сюда сгенеринную тумбу;
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
if ( ($width <= $max_width) && ($height <= $max_height) )
{
$tn_width = $width;
$tn_height = $height;
}
elseif (($y_ratio * $width) < $max_width)
{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
elseif (($x_ratio * $height) < $max_height)
{
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}
else
{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
$src = ImageCreateFromJpeg($image);
$dst = imagecreatetruecolor($tn_width,$tn_height);
ImageCopyResized($dst, $src, 0, 0, 0, 0,
$tn_width,$tn_height,$width,$height);
ImageJpeg($dst,$thumbshere,60);//качество 60
ImageDestroy($src);
ImageDestroy($dst);
|
вот так можно с помощью GD , но получаеться конечно херово
лучше с имейджмежика конверить , например так :
Код: |
exec('/usr/local/bin/convert -quality качество -compress JPEG -sample
ширинаxвысота путь_к_оригиналу путь_куда_тумбу_ложить');
|
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 18/03/05 в 00:45 |
mr.GOD писал: | Код: |
$max_width=ширина тумбы;
$max_height=высота тумбы;
$image=путь к оригиналу ;
$thumbshere=сюда сгенеринную тумбу;
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];
$x_ratio = $max_width / $width;
$y_ratio = $max_height / $height;
if ( ($width <= $max_width) && ($height <= $max_height) )
{
$tn_width = $width;
$tn_height = $height;
}
elseif (($y_ratio * $width) < $max_width)
{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
elseif (($x_ratio * $height) < $max_height)
{
$tn_height = ceil($x_ratio * $height);
$tn_width = $max_width;
}
else
{
$tn_width = ceil($y_ratio * $width);
$tn_height = $max_height;
}
$src = ImageCreateFromJpeg($image);
$dst = imagecreatetruecolor($tn_width,$tn_height);
ImageCopyResampled($dst, $src, 0, 0, 0, 0,
$tn_width,$tn_height,$width,$height);
ImageJpeg($dst,$thumbshere,60);//качество 60
ImageDestroy($src);
ImageDestroy($dst);
|
вот так можно с помощью GD , но получаеться конечно херово
|
А если так - то более-менее прилично
|
|
|
|
Дегенератор идей
С нами с 09.11.03
Сообщения: 2116
Рейтинг: 986
|
Добавлено: 18/03/05 в 02:24 |
не работает у меня первый скрипт
не совсем понял как параметры вставлять.
вот например надо все картинки из папки /home/domain1/pics/ уменьшить в папку /home/domain1/pics/1/
должно выглядеть так ?
$image=/home/domain1/pics/ ;
$thumbshere=/home/domain1/pics/1/;
|
|
|
|
С нами с 22.07.04
Сообщения: 361
Рейтинг: 308
|
Добавлено: 18/03/05 в 02:46 |
Поделюсь прикольным ноу-хау по ресамплу, благо я его сам где-то стырил
Код: |
<?php
function image_createThumb($src,$dest,$maxWidth,$maxHeight,$quality=100) {
if (file_exists($src) && isset($dest)) {
// path info
$destInfo = pathInfo($dest);
// image src size
$srcSize = getImageSize($src);
// image dest size $destSize[0] = width, $destSize[1] = height
$srcRatio = $srcSize[0]/$srcSize[1]; // width/height ratio
$destRatio = $maxWidth/$maxHeight;
if ($destRatio > $srcRatio) {
$destSize[1] = $maxHeight;
$destSize[0] = $maxHeight*$srcRatio;
}
else {
$destSize[0] = $maxWidth;
$destSize[1] = $maxWidth/$srcRatio;
}
// path rectification
if ($destInfo['extension'] == "gif") {
$dest = substr_replace($dest, 'jpg', -3);
}
// true color image, with anti-aliasing
$destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
imageAntiAlias($destImage,true);
// src image
switch ($srcSize[2]) {
case 1: //GIF
$srcImage = imageCreateFromGif($src);
break;
case 2: //JPEG
$srcImage = imageCreateFromJpeg($src);
break;
case 3: //PNG
$srcImage = imageCreateFromPng($src);
break;
default:
return false;
break;
}
// resampling
imageCopyResampled($destImage, $srcImage, 0, 0, 0, 0,$destSize[0],$destSize[1],$srcSize[0],$srcSize[1]);
// generating image
switch ($srcSize[2]) {
case 1:
case 2:
imageJpeg($destImage,$dest,$quality);
break;
case 3:
imagePng($destImage,$dest);
break;
}
return true;
}
else {
return false;
}
}
image_createThumb("/path/to/source.jpg", "/path/to/dest.jpg", 600, 600);
?>
|
Что-то подсказывает мне, что способ определения большей стороны тебе уже дали
|
|
|
|
С нами с 07.06.00
Сообщения: 3516
Рейтинг: 1802
|
Добавлено: 18/03/05 в 04:47 |
dimonka писал: | Поделюсь прикольным ноу-хау по ресамплу, благо я его сам где-то стырил
|
Добавить сюда еще стандартный перебор файлов в каталоге -- и вполне рабочий вариант получится
Код: | <?php
$images_dir = 'home/.../gallery/';
$thumbs_dir = 'home/.../gallery/th/';
function is_pic($str){
$pic_types ='jpeg|jpe|jpg|gif|png';
if(eregi("\.($pic_types)$", $str)) return true;
return false;
}
if ($handle = opendir($images_dir)) {
while (false !== ($file = readdir($handle))) {
if (($file != "." && $file != "..") && is_pic($file)) {
image_createThumb($images_dir.$file, $thumbs_dir.$file, 600, 600);
}
}
closedir($handle);
echo 'ALL Done';
}
?> |
|
|
|
|
Best4U.Biz
С нами с 21.02.04
Сообщения: 1252
Рейтинг: 1441
|
Добавлено: 18/03/05 в 14:10 |
maul писал: | не работает у меня первый скрипт
не совсем понял как параметры вставлять.
вот например надо все картинки из папки /home/domain1/pics/ уменьшить в папку /home/domain1/pics/1/
должно выглядеть так ?
$image=/home/domain1/pics/ ;
$thumbshere=/home/domain1/pics/1/; |
Это был вариант на 1 картинку. Т.е. :
$image=/home/domain1/pics/ 1.jpg;
$thumbshere=/home/domain1/pics/1/ 1small.jpg;
Ну а вариант с перебором каталога тебе уже дали
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 18/03/05 в 21:04 |
Если хочешь могу дать ссылку на статью по perl, правда там используется image:magik.
|
|
|
|
С нами с 07.10.03
Сообщения: 5194
Рейтинг: 3325
|
Добавлено: 18/03/05 в 21:23 |
maul писал: | Долбанутый спон выкладывает картинки с разрешением 3000x3000. Бред.
Задача: уменьшить все картинки в директории у меня на серваке до 600 пикселей по большей стороне.
Знаю, что GD это должен делать с легкостью.
Если, кто посоветует фришный скрипт или дешевый и ненавороченный платный, или даст дельный совет буду предельно благодарен.
Нашел то, что надо на -ttp://services.xyzsite.ru/ Но со мной так никто и не связывается по поводу оплаты, а надо срочно. |
Оффтопик: что за спонсор ? А на хуизе ася суппорта с ноября заглохла. на мыло не писал
|
|
|
|
Дегенератор идей
С нами с 09.11.03
Сообщения: 2116
Рейтинг: 986
|
Добавлено: 20/03/05 в 00:53 |
Всем спасибо.
Отдельное спасибо dimonka и sAx. Их совмещенный скрипт работает отлично.
|
|
|
|
С нами с 07.06.00
Сообщения: 3516
Рейтинг: 1802
|
Добавлено: 20/03/05 в 03:26 |
maul писал: | Всем спасибо.
Отдельное спасибо dimonka и sAx. Их совмещенный скрипт работает отлично. |
и тебе спасибо на добром слове
я уже раньше как-то говорил, сходи на http://php.amnuts.com/ -- там много полезных вещей есть.
maul писал: | ... Нашел то, что надо на -ttp://services.xyzsite.ru/ Но со мной так никто и не связывается по поводу оплаты, а надо срочно. |
так оно, наверное, и к лучшему  Сами денег не захотели.
|
|
|
|