Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.08.2012, 12:41
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от president
 
Регистрация: 09.07.2012
Сообщений: 92

perfect resize images
Вопрос конечно не по js - но я так и не нашел ответа поэтому может вы знаете

качественный ресайзер для картинок не знаете? Я перепробовал кучу библиотек для php они все одинаковые - но вот у вконтакте или у фейсбук ресайзеры отличные - что у них за ресайзеры?

мой сайт располагается так то на php

еще интересует модуль для улучшении качества фоток
Ответить с цитированием
  #2 (permalink)  
Старый 04.08.2012, 13:34
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

ImageMagick пробовал? По-моему у nic.ru в хостинге есть выбор между этой библиотекой и gd.
Ответить с цитированием
  #3 (permalink)  
Старый 04.08.2012, 14:51
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от president
 
Регистрация: 09.07.2012
Сообщений: 92

imagemagick пробовал gd стоит - на php не предлагать там язык не тянет сделать лучше, нужен специальный ресайзер
Ответить с цитированием
  #4 (permalink)  
Старый 04.08.2012, 15:08
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от president
на php не предлагать там язык не тянет сделать лучше, нужен специальный ресайзер
как это? на PHP есть отличный функционал для резайза картинок с лучшим качеством.. вы куда то не туда смотрите.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 04.08.2012, 15:11
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

смотрите в сторону
imagecopyresampled

примерно так работает, ресайзит с идеальным качеством:
$src = imagecreatefromfile( $full_name );
$dest = imagecreatetruecolor( $new_width, $new_height );
imagecopyresampled( $dest, $src, 0, 0, 0, 0, $new_width, $new_height, imagesx( $src ), imagesy( $src ) );
далее $dest сохраняете в файл или еще куда.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 04.08.2012, 15:19
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

забыл функцию кинуть:
function imagecreatefromfile( $filename ) {

	$ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );

	switch( $ext ) {
		case "jpg":
		case "jpeg":
			$src = imagecreatefromjpeg( $filename );
			break;
		case "png":
			$src = imagecreatefrompng( $filename );
			break;
		case "gif":
			$src = imagecreatefromgif( $filename );
			break;
		case "bmp":
			$src = imagecreatefromwbmp( $filename );
			break;
		default:
			$src = null;
	}

	return $src;
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 04.08.2012 в 16:56.
Ответить с цитированием
  #7 (permalink)  
Старый 04.08.2012, 15:50
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от president
 
Регистрация: 09.07.2012
Сообщений: 92

Цитата:
как это? на PHP есть отличный функционал для резайза картинок с лучшим качеством.. вы куда то не туда смотрите.
я раньше php вдоль и поперек использовал в что бы обнаружить качественный ресайз, ресайз фотографий людей, довольно сильно отличается от обычных картинок. Вконтакте например использует flash ресайз до этого у них тоже фотки были гг. Я потом когда вернусь к работе над фотками попробую ваш вариант но думаю что напрасно
Ответить с цитированием
  #8 (permalink)  
Старый 04.08.2012, 15:54
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от president
попробую ваш вариант но думаю что напрасно
ну это вы зря... я заметил многие используют метод imagecopyresized для изменения размеров картинок/фото.. И в чем то они конечно правы, так как этот метод работает в разы быстрее, но метод imagecopyresampled работает медленно, но и это оправданно, так как он не просто тупо попиксельно ресайзит, а качественно ресамплит. Попробуйте думаю вас оно вполне устроит.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 04.08.2012, 16:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вот для примера фото до (738 x 800):
<img src="http://img-fotki.yandex.ru/get/5311/91024863.1ff/0_bdb51_9c6aa77d_XL" />

а теперь фото после (400 x 433):
<img src="http://s011.radikal.ru/i315/1208/ac/21f82b08a583.png" />


код выглядит так:
<?php

	function imagecreatefromfile( $filename ) {

		$ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );

		switch( $ext ) {
			case "jpg":
			case "jpeg":
				$src = imagecreatefromjpeg( $filename );
				break;
			case "png":
				$src = imagecreatefrompng( $filename );
				break;
			case "gif":
				$src = imagecreatefromgif( $filename );
				break;
			case "bmp":
				$src = imagecreatefromwbmp( $filename );
				break;
			default:
				$src = null;
		}

		return $src;
	}

	// открываем файл
	$src = imagecreatefromfile( "before.png" );

	// установим новый размер ширины картинки
	$img_width = 400;

	// тут высоту подгоним под ширину, сохраняя пропорции
	if ( imagesx( $src ) > imagesy( $src ) ) {
		$new_width = $img_width;
		$new_height = $img_width / ( imagesx( $src ) / imagesy( $src ) );
	} else {
		$new_width = $img_width;
		$new_height = imagesy( $src ) / ( imagesx( $src ) / $img_width );
	}

	// создаем новый экземляр картинки
	$dest = imagecreatetruecolor( $new_width, $new_height );

	// параметры для картинок gif и png для сохранения альфа канала
	// если меняем картинку не png и не gif эти параметры не нужны
	imagecolortransparent( $dest, imagecolorallocatealpha( $dest, 0, 0, 0, 127 ) );
	imagealphablending( $dest, false );
	imagesavealpha( $dest, true );
	// ------------------------------------------------------------

	// ресамплим
	imagecopyresampled( $dest, $src, 0, 0, 0, 0, $new_width, $new_height, imagesx( $src ), imagesy( $src ) );

	// выводим в браузер
	header( "Content-Type: image/png;" );
	Imagepng( $dest );

?>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 04.08.2012 в 16:57.
Ответить с цитированием
  #10 (permalink)  
Старый 04.08.2012, 16:32
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

вот я залил к себе, можешь потестить выставляя разные размеры:
100 - http://spb-piksel.ru/test/?w=100
200 - http://spb-piksel.ru/test/?w=200
300 - http://spb-piksel.ru/test/?w=300
1000 - http://spb-piksel.ru/test/?w=1000
ну или свои размеры
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Event resize ( window ) vitaly777 Ваши сайты и скрипты 5 13.03.2018 10:23
ExtJs-выполнить запрос при evt: listener: resize JDev ExtJS 28 23.05.2012 10:13
iframe resize желательно mototools Сильная сторона человека Общие вопросы Javascript 3 24.08.2011 19:44
Определить как происходит resize W1nD Events/DOM/Window 2 20.04.2011 14:02
swf crop resize x-yuri Ваши сайты и скрипты 2 14.03.2011 05:58