форум вебмастеро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 )) Я уже додумался.. действительно =) |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:36416, gzipped size:10913 |