Показать сообщение отдельно
  #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.
Ответить с цитированием