форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / Создание сайта / Фотогалерея
Автор Сообщение
Dimas
Участник

34
# Дата: 24 Сен 2006 14:42


Вот такая трабла .. (((( Научился я уменьшать фотки.. но они физически не сохраняются (Никакая запись в файл того что получилось не пашет.. а уменьшенная фотка - это файл формата php)... как сделать так, тобы они уменьшались и сохранялись физически?

Андрей
Алексеевич

2123
# Дата: 24 Сен 2006 15:19 ° Поправил: Андрей


Просто надо сохранить через ф-цию imagejpeg (bool imagejpeg ( resource image [, string filename [, int quality]])), например. Где filename - путь к файлу с разрешением jpg.
Анологично для других форматов, например imagegif.

acsid
Alfa Guru

2449
# Дата: 24 Сен 2006 16:16


Dimas
скрипт в студию

Dimas
Участник

34
# Дата: 24 Сен 2006 16:59


Это мой скрипт ...

<? header ("Content-type: image/jpeg");
session_start();

$id="foto/".rtrim($_SESSION["minif"]).".jpg";

$im = @imagecreatefromjpeg($id) or die("");
list($width, $height, $type, $attr) = @getimagesize($id);
if($width>500)
{
$new1=$width/4;
$new2=$height/4;
$target = imagecreatetruecolor($new1,$new2);
imagecopyresampled($target, $im,0,0,0,0,$new1,$new2,$width,$height);

imagejpeg($target,'',100);
imagedestroy($im);
imagedestroy($target);


imagepreview($id);
}
else
{

$new1=$width/3;
$new2=$height/3;
$target = imagecreatetruecolor($new1,$new2);
imagecopyresampled($target, $im,0,0,0,0,$new1,$new2,$width,$height);

imagejpeg($target,'',100);
imagedestroy($im);
imagedestroy($target);


imagepreview($id);
}


?>


Попробую то что подсказал Андрей .. спать иду и выложу если получится....

А вот такой вопрос. .если не сохранять в файл, а выводить вот так... (так намного эфективнее) .. у меня была трабла.. дело в том, что за уменьшение всех фоток в фотоальбомах узеров отвечает один файл, если открыть два разных юзера одновременно то получится одинаковая фотография (Так как в id передается путь из Сессии по указонаму номеру фотки из строки браузера) - как это исправить.. может можно без сессий? Ведь досада в том что фотку надо доставать как <img src='name.php'> а не Include и я не могу в скрипте фотки прописать $takeid=intval($_GET["name"])

digs
Участник

369
# Дата: 24 Сен 2006 17:20


Пусть ссылка называется ID.jpg
где ID идентификатор. Такой картинки нет. Будет выработана ошибка 404. Ты пишешь скрипт, который будет ее обрабатывать, проверять строку запроса и если запросили картинку, то при помощи своего скрипта ее создавай. Естественно, идентификатор перед этим из строки извлеки.

Либо еще проще через mod_rewrite

acsid
Alfa Guru

2449
# Дата: 24 Сен 2006 22:19 ° Поправил: acsid


» Dimas
imagedestroy($target);

снеси, это какразтаки и удаляет картинку

Андрей
Алексеевич

2123
# Дата: 24 Сен 2006 23:33


» Dimas
Ведь досада в том что фотку надо доставать как <img src='name.php'> а не Include и я не могу в скрипте фотки прописать $takeid=intval($_GET["name"])

Все документы и изображения могут быть вызваны с параметрами. Если сделать <img src="image.php?img=id">, то в скрипте image.php можно словить $_GET['img'].

У тебя не сохраняет, потому что:
» Dimas
imagejpeg($target,'',100);

В месте, где у тебя одинарные скобки надо указать путь к файлу.

Dimas
Участник

34
# Дата: 28 Сен 2006 07:42


Я только осободился.. и только начал работать над этим скриптом .. большое всем спасибо... ребят... а вот такой вопрос... можно ли как-то сделать так, чтобы независимо от исходного размера все картинки одинаково уменьшались... например в html теге <img мне достаточно указать width и height подберетя пропорционально сам...

Dimas
Участник

34
# Дата: 28 Сен 2006 08:05


Я решил сделать как подсказал Андрей... с Параметрами .. вот когд файла

<? header ("Content-type: image/jpeg");
session_start();
$takeidfoto=strval($_GET["id"]);
$link = mysql_connect("localhost", "autobsc_root", "1020304050")or
die("Could not connect: " . mysql_error());
mysql_select_db("autobsc_inlove");
mysql_query("set names cp1251");


$randboy=mysql_query("Select nick,url from photo where nick='".$takeidfoto."' Limit 1,1");
while ($randboy2= mysql_fetch_array($randboy, MYSQL_NUM))
{
$id="foto/".rtrim($randboy2["1"]).".jpg";
}
$im = @imagecreatefromjpeg($id) or die("");
list($width, $height, $type, $attr) = @getimagesize($id);


$new1=$width/2;
$new2=$height/2;
$target = imagecreatetruecolor($new1,$new2);
imagecopyresampled($target, $im,0,0,0,0,$new1,$new2,$width,$height);

imagejpeg($target,'',100);
imagedestroy($im);
imagedestroy($target);


imagepreview($id);



?>

А вот ссылка на картинку
<img src='data/znak/foto/fotorb.php?photoalbum&id=".$randboy2["0"]."' border=1>

Рамиль
minibb moder

1152
# Дата: 28 Сен 2006 11:55


Dimas
Наверное нужно получить размер картинки функцией getimagesize(); а потом разделить длину или ширину на определённый параметр и полученное число умножить на ширину/длину. Я так делал для правильного уменьшения картинок. Да, ищё сделай так, например
$image = getimagesize("path_to_file");

Длина/ширина в теге будет в массиве $image[3]

acsid
Alfa Guru

2449
# Дата: 28 Сен 2006 15:31 ° Поправил: acsid


» Рамиль
Наверное нужно получить размер картинки функцией getimagesize(); а потом разделить длину или ширину на определённый параметр

вообще нада определить минимальную высоту и ширину и стандартную , и если размеры у фотки минимальные,стандартные или меньше , не сжимать.А если больше , то от действительного размера
getimagesize

нужно отнять стандартное заначание (высота,ширина) , за тем определить разницу, на какой процент (высота и ширина ) стандартной картинки мешьне того что отдало
getimagesize

и затем нужно уменьшить текущую картинку на среднее арифметические этих процентов (по высоте и ширине) , для равномерного сжатия каритинки , чтобы небыло эфекта вытянутости.

Лично я так делал

Dimas
Участник

34
# Дата: 29 Сен 2006 12:56


Хмм... ребята.. а как же передать параметры с браузера? То что предлагает Андей у меня не работает

Dimas
Участник

34
# Дата: 29 Сен 2006 13:04


Вот я дурак ))) Ыыы. я не правильный путь указывал ыы


Размер фотки... можно сделать легче с фото ...

1. Делите размеры на определенные числа... определяете минимальный размеор для деления и максимальный. Ну типа если 300 на 200 то не делим.. а если 800 на 600 то делим на два и в таком духе.. на вам нужно например 200 на 100 постоянно .. а это вы указываете уже в HTML - самое главное - ВЕС фотки уменьшился

acsid
Alfa Guru

2449
# Дата: 29 Сен 2006 15:10


» Dimas
Ну типа если 300 на 200 то не делим.. а если 800 на 600 то делим на два и в таком духе..

А если фотка не стандартная 759 на 347 скажем.. ты будешь перебирать? помоему это изврат

Jizus CREED
Участник

684
# Дата: 29 Сен 2006 23:34


Dimas
Учи математику))). Чтоб из любой фотки получить допустим 300 на 200, нужно всего лишь ширину рисунка (твоего) разделить на нужную (300). Получаем точное число, на которое нужно разделить размер твоего рисунка, чтоб получить нужный. Тогда размер рисунка подгонится по ширине правильно, и пропорции сохранятся. А дальше уже дело html'а, если размер не стандартных пропорций.
И работать будет гораздо быстрее, чем твой "перебор")))
acsid, тебе правильно сказал, это изврат.

Dimas
Участник

34
# Дата: 30 Сен 2006 08:36


Jizus )) Я уже додумался.. действительно =)

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:36416, gzipped size:10913

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]