Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.08.2009, 23:38
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Сжатие изображений (PHP)
Пишу скрипт сжатия изображений, чтобы посетители сайта могли загружать в качестве аватара любое изображение. Использую функцию imagecopymerge. В принципе всё работает, но иногда возникают проблемы с некоторыми *.PNG.

Есть подозрение, что библиотека GD обрабатывает не все форматы PNG...
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2009, 00:27
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

С какими именно PNG? С полупрозрачностью?
Какой функцией получаете ресурс? imagecreatefrompng?
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2009, 12:57
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Вот, убрал всё лишнее, оставил код только для PNG. In the end должна получаться уменьшенная копия шириной в 90px. Пропорциональное изменение высоты нужно для не квадратных аватаров. При отображении на странице ширина задаётся жёстко (90px) а высота в диапазоне от min-height до max-height (для браузеров "понимающих" эти свойства).
// Если размер файла больше 15 КБ
if ( $_FILES['file']['size'] > 15000 )
{
	// Открытие переданного изображения
	$src = imagecreatefrompng($newFileName);

	// Получение размера загруженного изображения
	$imgInfo = getimagesize($newFileName);

	// Масштабный коэффициент
	$scale = 90/$imgInfo[0];

	// Новая высота
	$newheight = $imgInfo[1]*$scale;
	settype($newheight, "integer");
						
	// Создание нового изображения
	$dest = imagecreatetruecolor(90, $newheight);

	// Копирование изображения
	imagecopyresampled($dest, $src, 0, 0, 0, 0, 90, $newheight, $imgInfo[0], $imgInfo[1]);

	// Запись изображения в файл
	imagepng($dest, $newFileName, 100);

	// Освобождение памяти
	imagedestroy($dest);
	imagedestroy($src);
}

Проблемы возникают только с PNG имеющими прозрачность.

Последний раз редактировалось Tim, 14.01.2012 в 23:40. Причина: Нужно код оформить. Лучше поздно чем никогда. =)
Ответить с цитированием
  #4 (permalink)  
Старый 13.01.2012, 18:24
Аватар для Mister-Fil
Новичок на форуме
Отправить личное сообщение для Mister-Fil Посмотреть профиль Найти все сообщения от Mister-Fil
 
Регистрация: 12.09.2011
Сообщений: 5

Сообщение от Tim Посмотреть сообщение
# Запись изображения в файл
imagepng($dest, $newFileName, 100);
bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )
quality
Compression level: from 0 (no compression) to 9.
Ответить с цитированием
  #5 (permalink)  
Старый 13.01.2012, 18:29
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

не понимаю, зачем поднимать темы чуть ли не трех летней давности.
Ответить с цитированием
  #6 (permalink)  
Старый 14.01.2012, 08:57
Аватар для Mister-Fil
Новичок на форуме
Отправить личное сообщение для Mister-Fil Посмотреть профиль Найти все сообщения от Mister-Fil
 
Регистрация: 12.09.2011
Сообщений: 5

Сообщение от devote Посмотреть сообщение
не понимаю, зачем поднимать темы чуть ли не трех летней давности.
я не обратил внимание на давность темы, но считаю что многим будет полезно узнать в чем была ошибка и кому-то это пригодится
Ответить с цитированием
  #7 (permalink)  
Старый 14.01.2012, 19:34
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

=)
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)

Последний раз редактировалось Tim, 14.01.2012 в 19:38.
Ответить с цитированием
  #8 (permalink)  
Старый 14.01.2012, 23:19
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Сообщение от Mister-Fil Посмотреть сообщение
считаю что многим будет полезно узнать в чем была ошибка и кому-то это пригодится
Надеюсь никто подобным страдать не будет и бедные пользователи смогут загружать анимированный гиф

Tim,
Не мучай GD и пользователей, пусть грузят что хотят в размер.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #9 (permalink)  
Старый 14.01.2012, 23:34
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Gozar,
Я уже сейчас тоже так думаю, всё равно все на безлимитке сидят

Цитата:
Надеюсь никто подобным страдать не будет и бедные пользователи смогут загружать анимированный гиф
Важное замечание. Хотя для гифов можно сделать исключение или разваливать их на кадры, сжимать и склеивать обратно. На http://www.phpclasses.org кажется была библиотечка для работы с анимированными гифами.
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)

Последний раз редактировалось Tim, 14.01.2012 в 23:44.
Ответить с цитированием
  #10 (permalink)  
Старый 15.01.2012, 04:10
Кандидат Javascript-наук
Отправить личное сообщение для elf2002 Посмотреть профиль Найти все сообщения от elf2002
 
Регистрация: 30.12.2011
Сообщений: 114

не "сжимать", а "делать ресамплинг/давнсамплинг"
__________________
без шуток
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снятие затемнения с экрана при получении ответа от php срипта с помощью setInterval roma86 jQuery 0 16.08.2009 12:39
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23
onLoad до изображений в IE vasa_c Events/DOM/Window 2 28.04.2009 13:09
проблема со сменой изображений при наведение Jack Элементы интерфейса 0 19.03.2009 22:13
Программист PHP + ExtJS, Москва, от 50000 seva Работа 0 08.03.2009 11:01