Скрипт для сжатия изображения
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Скрипт для сжатия изображения - 2007-03-27 19:15:31.756666
|
|
|
Bios_inside
Сообщений: 626
Оценки: 0
Присоединился: 2007-02-23 10:44:18.170000
|
Нада скрипт для сжатия картинок. У меня есть в папке 300 картинок, хочу сжать их до розмеров аватары. Скачал скрипт галереи, думал по 1 сжимать (типа загружая фотки в галерею но на своем апаче), но понял, что это сильно долго. Есть какой-то простой и удобный способ сжать 300 фоток до розмеров аватары не вручную? Если ни на РНР, то может прога какая есть???
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-27 20:00:29.726666
|
|
|
GROB_T
Сообщений: 349
Оценки: 0
Присоединился: 2007-01-05 02:54:27.330000
|
у меня есть одна идея, только не знаю насчет быстродействия, но тебе не надо будет ничего делать, можно написать прогу, которая откроет в paint-е по очереде раждую картинку, потом сменит размеры картинки, сохранит и приступит к следующей картинке. Только я не говорю, что прогу легко написать будтет, но вот пользоваться ей будет очень просто:)
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-27 20:17:42.630000
|
|
|
Bios_inside
Сообщений: 626
Оценки: 0
Присоединился: 2007-02-23 10:44:18.170000
|
слушай, ты прям пророк могамет, такие перлы выдаёщ:D:DЯ бы сам не догадался, что можна такую прогу написать:D:D:DЯ думал ваще програмы писать нельзя:D:D:DИ такое багатое описание програмы, и скрипт такой красивый и интерфейс описан, я не осмелюсь украсть у тебя авторские права:D:D:D Пипол, можна поконкретней????
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-27 20:43:51.900000
|
|
|
GROB_T
Сообщений: 349
Оценки: 0
Присоединился: 2007-01-05 02:54:27.330000
|
по-моему это все несложно делается на vbs, действия проги можно расписать по действиям, прога должна основываться на отправке нажатий клавиш 1)запускает paint 2)открывает картинку в паинте через меню 3)переходит в настройку изображения и меняет размеры картинки на нужные 4)сохраняет картинку надеюсь теперь понятно, если хочешь, могу попытаться сделать
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-27 21:43:15.180000
|
|
|
GROB_T
Сообщений: 349
Оценки: 0
Присоединился: 2007-01-05 02:54:27.330000
|
Bios_inside, сделал прогу, вот скрипт: set s=createobject("wscript.shell") s.run"mspaint" i=1 while i<10'количество картинок wscript.sleep 500 s.sendkeys"{f10}{down 2}{enter}{tab 5}{right 2}{down 6}{enter}{tab 2}" execute("s.sendkeys""{down "&i&"}""") s.sendkeys"{enter}{f10}{right 3}{down 2}{enter}" s.sendkeys"100"'между кавычками надо указать процент масштабирования по горизонтали s.sendkeys"{tab}" s.sendkeys"100"'между кавычками надо указать процент масштабирования по вертикали s.sendkeys"{enter}{f10}{down 3}{enter}" i=i+1 wend это все надо сохранить с расширением .vbs и не забыть указать настройки, в папке мои рисунки все снести, потом в папку мои рисунки скопировать все твои фотки, запустить прогу и НИЧЕГО на компе не делать, жди пока прога закончит свою работу, после завершения работы проги в папке мои рисунки все картинки будут переделаны в том масштабе, который ты указал в скрипте
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-28 00:05:38.760000
|
|
|
Bios_inside
Сообщений: 626
Оценки: 0
Присоединился: 2007-02-23 10:44:18.170000
|
хекер.ру глючит
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-28 00:23:21.943333
|
|
|
GROB_T
Сообщений: 349
Оценки: 0
Присоединился: 2007-01-05 02:54:27.330000
|
Впринципе то, что тебе надо, можно делать не паинтом, фотошопом, только тебе придется разделить фотки на две группы, 1-ая те у которых ширина больше высоты, вторая наоборот, и тогда надо уже два скрипта, по одному для каждого типа фоток
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-28 06:35:49.203333
|
|
|
Lex_Voodoo
Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
|
В ACDSee есть возможность пакетного ресайза картинок.
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-28 06:38:48.613333
|
|
|
Net_FOX
Сообщений: 126
Оценки: 0
Присоединился: 2005-01-24 16:25:37
|
Я тут уже гдето уже отписывался по данному вопросу, чуть попоже еще раз выложу скрипт, небольшая модификация уже готового скрипта, ты просто указываешь какие необходимы размеры и качество изображения и он тебе выводить твое изображение в нужных тебе размерах, и при этом сама картинка остается нормальной!
|
|
|
RE: Скрипт для сжатия изображения - 2007-03-28 08:55:58.483333
|
|
|
Net_FOX
Сообщений: 126
Оценки: 0
Присоединился: 2005-01-24 16:25:37
|
Как и обещал выкладываю код:
<?php
if (!mysql_connect(dbHost, dbUser, dbPass)) {
error_reporting(0);
die ("Нет связи с сервером. Попробуйте позднее...");
}
if (!mysql_select_db(dbName)) {
error_reporting(0);
die ("Нет связи с базой данных. Попробуйте позднее...");
}
if (isset($smal)){
$sql = mysql_query("SELECT src_smal, base_smal FROM foto WHERE id='".$smal."'");
$res = mysql_fetch_array($sql);
$fname = $res['base_smal'].$res['src_smal'];
}
if (isset($full)){
$sql = mysql_query("SELECT src_normal, base FROM foto WHERE id='".$full."'");
$res = mysql_fetch_array($sql);
$fname = $res['base'].$res['src_normal'];
if (isset($all)){
$all = getimagesize($fname);
$w = $all[0];
}
}
//print $fname;
// f - имя файла
// w - требуемая ширина картинки
// q - качество сжатия jpeg
// s - выводить ли надпись
// t - формат: 0 - без изменения, 1 - пропорциональный, 2 - квадратный кусок
//if (!isset($fname)) exit; // имя файла изображения
if (!isset($t)) $t = 1; // формат по умолчанию пропорциональный
if (!isset($s)) $s = 1; // вывод строчки на картинке по умолчанию включён
if (!isset($q)) $q = 90; // качество jpeg по умолчанию
if (!isset($w)) $w = 100; // ширина картинки по умолчанию
list($width, $height, $type, $attr) = @getimagesize($fname);
if (!$type) $type = 3;
//-------------------------------
//
// вывод без изменения
// применяем в случае, если нужно
// только нанести надпись
//
//-------------------------------
if (($t == 0)&&(file_exists($fname)))
{
switch ($type)
{
case 1: header("Content-type: image/gif");
$dest = imagecreatefromgif($fname) or die ("Cannot Initialize new GD image stream");
break;
case 2: header("Content-type: image/jpeg");
$dest = imagecreatefromjpeg($fname) or die ("Cannot Initialize new GD image stream");
break;
case 3: header("Content-type: image/png");
$dest = imagecreatefrompng($fname) or die ("Cannot Initialize new GD image stream");
break;
}
// не наносим надпись
if (!$s)
{
@readfile($fname);
exit;
}
$str = "Тут копирайты которые будут установленны на изображении";
// определяем координаты вывода текста
$w_dest = imagesx($dest);
$h_dest = imagesy($dest);
$x_text = $w_dest-70;
$y_text = $h_dest-15;
// определяем каким цветом на каком фоне выводить текст
$white = imagecolorallocate($dest, 255, 255, 255);
$black = imagecolorallocate($dest, 0, 0, 0);
// выводим текст
if ($s)
{
imagestring($dest, 2, $x_text-1, $y_text-1, $str,$black);
imagestring($dest, 2, $x_text+1, $y_text+1, $str,$black);
imagestring($dest, 2, $x_text+1, $y_text-1, $str,$black);
imagestring($dest, 2, $x_text-1, $y_text+1, $str,$black);
imagestring($dest, 2, $x_text-1, $y_text, $str,$black);
imagestring($dest, 2, $x_text+1, $y_text, $str,$black);
imagestring($dest, 2, $x_text, $y_text-1, $str,$black);
imagestring($dest, 2, $x_text, $y_text+1, $str,$black);
imagestring($dest, 2, $x_text, $y_text, $str,$white);
}
@imagegammacorrect($dest, 1, 1.1);
@imageinterlace($dest, 1);
// выводим картинку в одном из трёх форматов
switch ($type)
{
case 1: imagegif($dest); break;
case 2: imagejpeg($dest,'',$q); break;
case 3: imagepng($dest); break;
}
imagedestroy($dest);
exit;
}
// файл не найден, выводим заглушку
else if (($t == 0)&&(!file_exists($fname)))
{
header("Content-type: image/png");
$src = @imagecreatefrompng("news/images/imgerr.png") or die ("Cannot Initialize new GD image stream");
imagepng($src);
exit;
}
//--------------------------------------------
//
// МАСШТАБИРОВАНИЕ
// создаём исходное изображение на основе
// исходного файла и опеределяем его размеры
//
//--------------------------------------------
if (!file_exists($fname))
{
$src = @imagecreatefrompng("resize_error.png") or die ("Cannot Initialize new GD image stream");
$s = 0;
}
else
{
switch ($type)
{
case 1: header("Content-type: image/gif");
$src = imagecreatefromgif($fname) or die ("Cannot Initialize new GD image stream");
break;
case 2: header("Content-type: image/jpeg");
$src = imagecreatefromjpeg($fname) or die ("Cannot Initialize new GD image stream");
break;
case 3: header("Content-type: image/png");
$src = imagecreatefrompng($fname) or die ("Cannot Initialize new GD image stream");
break;
}
}
$w_src = imagesx($src);
$h_src = imagesy($src);
if ($t == 1) // операции для получения прямоугольного файла
{
$ratio = $w_src/$w;
$w_dest = round($w_src/$ratio);
$h_dest = round($h_src/$ratio);
// создаём пустую картинку
// важно именно truecolor!, иначе будум иметь 8-битный результат
$dest = @imagecreatetruecolor($w_dest,$h_dest) or die("Cannot Initialize new GD image stream");
$white = imagecolorallocate($dest, 255, 255, 255);
imagefill($dest,1,1,$white);
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w_dest, $h_dest, $w_src, $h_src);
}
if ($t == 2) // операции для получения квадратного файла
{
// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будум иметь 8-битный результат
$dest = @imagecreatetruecolor($w,$w) or die("Cannot Initialize new GD image stream");
// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src > $h_src)
imagecopyresampled($dest, $src, 0, 0, round((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже середику)
if ($w_src < $h_src)
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
// квадратная картинка масштабируется без вырезок
if ($w_src == $h_src)
imagecopyresampled($dest, $src, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
}
if ($s == 1) // нужна ли надпись
{
$str = "Тут копирайты которые будут установленны на изображении";
// определяем координаты вывода текста
$x_text = $w_dest-70;
$y_text = $h_dest-15;
// определяем каким цветом на каком фоне выводить текст
$white = imagecolorallocate($dest, 255, 255, 255);
$black = imagecolorallocate($dest, 0, 0, 0);
// выводим текст
imagestring($dest, 2, $x_text-1, $y_text-1, $str,$black);
imagestring($dest, 2, $x_text+1, $y_text+1, $str,$black);
imagestring($dest, 2, $x_text+1, $y_text-1, $str,$black);
imagestring($dest, 2, $x_text-1, $y_text+1, $str,$black);
imagestring($dest, 2, $x_text-1, $y_text, $str,$black);
imagestring($dest, 2, $x_text+1, $y_text, $str,$black);
imagestring($dest, 2, $x_text, $y_text-1, $str,$black);
imagestring($dest, 2, $x_text, $y_text+1, $str,$black);
imagestring($dest, 2, $x_text, $y_text, $str,$white);
}
if (!file_exists($fname))
{
header("Content-type: image/png");
$black = imagecolorallocate($dest, 0, 0, 0);
imagerectangle($dest,0,0,$w-1,$w-1,$black);
imagepng($dest);
exit;
}
@imagegammacorrect($dest, 1, 1.1);
@imageinterlace($dest, 1);
switch ($type)
{
case 1: imagegif($dest); break;
case 2: imagejpeg($dest,'',$q); break;
case 3: imagepng($dest); break;
}
imagedestroy($dest);
imagedestroy($src);
?>
|
|
|
|
|