Прога , уменьшающая и сжимающая сразу несколько рисунков?

12
Dreammaker
На сайте с 20.04.2006
Offline
569
#11

Jefa, ну разве что попозжее. :)

или сегодня вечером или уже завтра. Это если php нормально дружит с прозрачными png (точно не помню как оно там). Но на сайтах делают значит должно получится.

p.s. там кстати ошибка была в скрипте - исправил.

p.p.s. Там ещё не добавляет к названиям _sm или какую-то другую строчку, потом и это сделаю, если время будет.

Jefa
На сайте с 01.02.2007
Offline
191
#12
Dreammaker:
Это если php нормально дружит с прозрачными png

дружит-дружит :)

Это будет полезный скриптик, возьму в коллекцию!

K. Ermakov
На сайте с 10.12.2004
Offline
328
#13

Как вариант - Image Resizer (521 кб) из пакета Microsoft PowerToys for Windows XP

С уважением, Константин Ермаков, absite.ru: онлайн кроссворды (http://absite.ru/); searchsuggest.ru: поисковые подсказки доставляют (http://searchsuggest.ru/).
Polimer
На сайте с 01.09.2006
Offline
84
#14

еще, как вариант, FastStone Photo Resizer (1,24MB). Тут и пакетная обработка, и водяные знаки, и ничего лишнего. Программа бесплатна для некоммерческого использования.

Программные решения для бизнеса. (http://frontsoft.ru/) На заказ. Дорого.
DimaOD
На сайте с 29.10.2007
Offline
72
#15

Еще один вариант - Advanced JPEG Compressor , очень хорошая софтина, именно по этому профилю.

Продаете статьи/контекстные ссылки в уанэте? Отлично, жду ваших предложений в ЛС!
ON
На сайте с 22.04.2006
Offline
138
#16
Jefa:
Понимаю, что на блюдечке с золотой каемочкой, но все же
Чтобы в папку photos2 сохранялись фото с уже наложеным png в нужном месте.

поддерживаю, если конечно это не сложно для Dreammaker.

Полная автоматизация для новичков в директе (http://context.apishops.com/api-direct.htm)
Dreammaker
На сайте с 20.04.2006
Offline
569
#17

Вот переписал скриптец.

Добавились новые параметры:

$logo - это имя файла с картинкой которая будет использоваться как водяной знак - положить в корень сайта (т.е., рядом со скриптом).

$flag - это строчка, которая будет дописываться в название результирующего файла, например, '_sm' - было image.jpg - станет image_sm.jpg

$x, $y - x, y - координаты точки в картинке результате откуда начнётся верхний левый угол водного знака. Советую оставить по умолчанию null и null - в этом случае скрипт вставит вотермарк в правый нижний угол значимой картинки (то есть, если будут слева и справа белые поля, то он не на них влепит, а именно на уменьшенную картинку).


<?

$width= 200; // ширина полученного рисунка;

$height = 100; // высота рисунка

$background = 0xFFFFFF; #0xFFFFFF - это белый

$quality = 100; // качество сжатия здесь 100% ;

$logo = 'logo.png'; // название файла с водяным знаком

$flag = '_sm'; // строчка ,которая будет добавляться к названию файла. q123.jpg -> q123_sm.jpg

$x = null; // x - координата точки в картинке-результате куда будет вставлен вотермарк

$y = null; // у- координата точки в картинке-результате куда будет вставлен вотермарк

// (точно не помню, но по-моему с форума Нетката, по крайней мере я выудил её из своей разработки на неткате)
// ну и по просьбе общественности дописано добавление водніх знаков в картинку.
function img_resize($src, $dest, $logosrc, $width, $height, $rgb=0xFFFFFF, $quality=100, $flag, $x=null, $y=null)
{
if (!file_exists($src)) {
echo "File ne exists";
return false;
}

$size = getimagesize($src);

if ($size === false) {
echo "Razmer ne exists";
return false;
}
// Определяем исходный формат по MIME-информации, предоставленной
// функцией getimagesize, и выбираем соответствующую формату
// imagecreatefrom-функцию.
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$x_ratio = $width / $size[0];
$y_ratio = $height / $size[1];

$ratio = min($x_ratio, $y_ratio);
$use_x_ratio = ($x_ratio == $ratio);

$new_width = $use_x_ratio ? $width : floor($size[0] * $ratio);
$new_height = !$use_x_ratio ? $height : floor($size[1] * $ratio);
$new_left = $use_x_ratio ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

$isrc = $icfunc($src);
$idest = imagecreatetruecolor($width, $height);

imagefill($idest, 0, 0, $rgb);
imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
$new_width, $new_height, $size[0], $size[1]);

if ( !empty($logosrc) ) {
if (!file_exists($logosrc)) {
echo "Logo ne exists";
return false;
}

$size2 = getimagesize($logosrc);

if ($size === false) {
echo "Razmer logo ne exists";
return false;
}

$format = strtolower(substr($size2['mime'], strpos($size2['mime'], '/')+1));
$icfunc = "imagecreatefrom" . $format;
if (!function_exists($icfunc)) return false;

$lisrc = $icfunc($logosrc);


$x = ( empty($x) ) ? $new_left + $new_width - $size2[0] : $x;

$y = ( empty($y) ) ? $new_top + $new_height - $size2[1] : $y;


imagecopyresampled($idest, $lisrc, $x, $y, 0, 0,
$size2[0], $size2[1], $size2[0], $size2[1]);

imagedestroy($lisrc);

preg_match('~(.+)\.(.+)$~', $dest, $match);

$dest = $match[1].$flag.'.'.$match[2];

}
imagejpeg($idest, $dest, $quality);


imagedestroy($isrc);
imagedestroy($idest);

return true;

}

//Взято из CodeIgniter (хэлпер file_helper) www.codeigniter.com

function get_filenames($source_dir, $include_path = FALSE)
{
static $_filedata = array();

if ($fp = @opendir($source_dir))
{
while (FALSE !== ($file = readdir($fp)))
{
if (@is_dir($source_dir.$file) && substr($file, 0, 1) != '.')
{
get_filenames($source_dir.$file."/", $include_path);
}
elseif (substr($file, 0, 1) != ".")
{

$_filedata[] = ($include_path == TRUE) ? $source_dir.$file : $file;
}
}
return $_filedata;
}
}

$files = get_filenames($_SERVER['DOCUMENT_ROOT'].'/photos1/');


foreach ($files as $file){
img_resize($_SERVER['DOCUMENT_ROOT'].'/photos1/'.$file, $_SERVER['DOCUMENT_ROOT'].'/photos2/'.$file, $_SERVER['DOCUMENT_ROOT'].'/'.$logo, $width, $height, $background, $quality, $flag, $x, $y);
}

При вашем желании автор сией компиляции не откажется от donation :2cents: :D

Также принимаются багрепорты :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий