[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как уменьшить фактический размер изображения
herman
Ситуация такая, имеется база данных с изображениями скажем 640x480. С добавлением и выводом изображений проблем нет, я вывожу все имеющиеся картики на одной странице, с уменьшенными размерами, я это делаю при помощи тэга и изображения становится с длиной 100 и актуальной высотой, НО фактический размер изображения в kB не уменьшается, т.е. время затрачиваемое на загрузку одного маленького изображения затрачивается столько же сколько и на большое, если бы картинок было б 1-3, то это еще нормально, а если их 100? Так вот существует ли простой способ, как уменьшить фактический размер исходного изображения?



Спустя 1 час, 18 минут, 22 секунды (1.11.2006 - 09:28) md5 написал(а):
Способов много, ты хочешь уменьшать фотку при загрузке на сервер??
или ты по фтп заливаешь фотки? тогда фозьми прогу, которая пачкой эти фотки уменьшит и не парься...

Спустя 30 минут, 55 секунд (1.11.2006 - 09:59) dreadboy написал(а):
попробуй такой скрипт (сервера пока не жаловались :)) )<br><br>preview.php:<br>
 
<?php
if (eregi("^([a-zA-Z0-9]+)+.+([a-z]{3,4})+$",$_GET['file']) && file_exists("unix/path/to/pics/".$_GET['file'])) {
	$filename = $_GET['file'];
	list($width, $height) = getimagesize($filename);
	$new_width = 101;
	$new_height = $new_width;
 
	$image_p = imagecreatetruecolor($new_width, $new_height);
 
	$s = getimagesize($filename);
	switch(strtolower($s['mime'])) {
		case "image/gif": $image = imagecreatefromgif($filename); break;
		case "image/jpeg": $image = imagecreatefromjpeg($filename); break;
		case "image/png": $image = imagecreatefrompng($filename);break;
		default: $image = imagecreatefromgif("http://mobibase.ru/img/noimage.gif"); //здесь замени на свое чтонть.
	}
 
	imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
	$black = imagecolorallocate($image_p,89,140,173);
	imagerectangle($image_p,0,0,100,100,$black);
	header('Content-type: image/jpeg');
	imagejpeg($image_p, null, 100);
} else {
	die();
}
?>
 


 
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)+.+([a-z]{3,4})+$ /previews/preview.php?file=$1
 


собственно вот.
заливаешь это всё в папку previews. и потом выводишь свои картинки с путем уже /previews/имя_файла

Спустя 11 минут, 41 секунда (1.11.2006 - 10:11) herman написал(а):
2 dreadboy Спасибо, попробую.
2 md5. Нет, имеется ввиду изображения, бинарный код которых хранится в Mysql. Т.е вытащить этот код, преобразовать его - получить уменьшенное изображение и отобразить его пользователю, и при уменьшении размеров, уменьшить её размер в килобайтах.

Спустя 7 минут, 29 секунд (1.11.2006 - 10:18) dreadboy написал(а):
QUOTE(herman)
2 dreadboy Спасибо, попробую.
2 md5. Нет, имеется ввиду изображения, бинарный код которых хранится в Mysql. Т.е вытащить этот код, преобразовать его - получить уменьшенное изображение и отобразить его пользователю, и при уменьшении размеров, уменьшить её размер в килобайтах.

ууу... жесть.... хранить бинарники в мускуле...

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

з.ы. ИМХО лушче картинки отдельными файлами хранить...

Спустя 19 минут, 47 секунд (1.11.2006 - 10:38) herman написал(а):
Нашел отличную функцию, которая выполняет эти действия: imagecopyresampled(),
если кому интересно тут лежит описуха: http://us2.php.net/imagecopyresampled

Спустя 1 минута, 35 секунд (1.11.2006 - 10:40) dreadboy написал(а):
сам нашел?
я ж тебе вроде как код скинул, где с её помощью всё и сделано.

Спустя 27 минут, 2 секунды (1.11.2006 - 11:07) herman написал(а):
Нашел, с товей помощью конечно.
только возникает еще вопрос, как скормить этому скрипту информацию из базы данных, например я делаю так:
......
$getPhoto = mysql_fetch_object($result);
//body - бинарная информация изображения из бд
$body = $getPhoto->body;
$filename = $body;
//присваиваю переменной $filename содержимое $body
?>
однако скрипт возвращает пустое изображение, где здесь ошибка?

Спустя 48 минут, 27 секунд (1.11.2006 - 11:55) dreadboy написал(а):
$filename - это указатель на файл.
попробуй $image = $body.
но не факт.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.