[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ресайз в 300dpi
asdf27
Наткнулся на неприятную особенность... картинка в 300dpi при ресайзе на выходе получается 72dpi. Натолкните на мысль, как поправить?
AllesKlar
неплохо бы увидить код

_____________
[продано копирайтерам]
asdf27
Код не мой:

<?php
$mini='123.jpg';

/*
$w_o и h_o - ширина и высота выходного изображения
*/

function resize($image, $w_o = false, $h_o = false) {
if (($w_o < 0) || ($h_o < 0)) {
echo "Некорректные входные параметры";
return false;
}
list($w_i, $h_i, $type) = getimagesize($image); // Получаем размеры и тип изображения (число)
$types = array("", "gif", "jpeg", "png"); // Массив с типами изображений
$ext = $types[$type]; // Зная "числовой" тип изображения, узнаём название типа
if ($ext) {
$func = 'imagecreatefrom'.$ext; // Получаем название функции, соответствующую типу, для создания изображения
$img_i = $func($image); // Создаём дескриптор для работы с исходным изображением
} else {
echo 'Некорректное изображение'; // Выводим ошибку, если формат изображения недопустимый
return false;
}
/* Если указать только 1 параметр, то второй подстроится пропорционально */
if (!$h_o) $h_o = $w_o / ($w_i / $h_i);
if (!$w_o) $w_o = $h_o / ($h_i / $w_i);
$img_o = imagecreatetruecolor($w_o, $h_o); // Создаём дескриптор для выходного изображения
imagecopyresampled($img_o, $img_i, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i); // Переносим изображение из исходного в выходное, масштабируя его
$func = 'image'.$ext; // Получаем функция для сохранения результата
return $func($img_o, $image); // Сохраняем изображение в тот же файл, что и исходное, возвращая результат этой операции
}
/* Вызываем функцию с целью уменьшить изображение до ширины в 100 пикселей, а высоту уменьшив пропорционально, чтобы не искажать изображение */

function resize_photo($src,$src2){
$params = getimagesize($src);
switch ( $params[2] ) {
case 1: $source = imagecreatefromgif($src); break;
case 2: $source = imagecreatefromjpeg($src); break;
case 3: $source = imagecreatefrompng($src); break;
}
$max_size = 591;

if ( $params[1]>$max_size ) {
if ( $params[0]>$params[1] ) $size = $params[0];
else $size = $params[1];
$resource_width = floor($params[0] * $max_size / $size);
$resource_height = floor($params[1] * $max_size / $size);
$resource = imagecreatetruecolor($resource_width, $resource_height);
imagecopyresampled($resource, $source, 0, 0, 0, 0, $resource_width, $resource_height, $params[0], $params[1]);
}
else $resource = $source;
$resource_src = $src2;
imageJpeg($resource, $resource_src);

}


/*
$x_o и $y_o - координаты левого верхнего угла выходного изображения на исходном
$w_o и h_o - ширина и высота выходного изображения
*/

function crop($image, $x_o, $y_o, $w_o, $h_o) {
if (($x_o < 0) || ($y_o < 0) || ($w_o < 0) || ($h_o < 0)) {
echo "Некорректные входные параметры";
return false;
}
list($w_i, $h_i, $type) = getimagesize($image); // Получаем размеры и тип изображения (число)
$types = array("", "gif", "jpeg", "png"); // Массив с типами изображений
$ext = $types[$type]; // Зная "числовой" тип изображения, узнаём название типа
if ($ext) {
$func = 'imagecreatefrom'.$ext; // Получаем название функции, соответствующую типу, для создания изображения
$img_i = $func($image); // Создаём дескриптор для работы с исходным изображением
} else {
echo 'Некорректное изображение'; // Выводим ошибку, если формат изображения недопустимый
return false;
}
if ($x_o + $w_o > $w_i) $w_o = $w_i - $x_o; // Если ширина выходного изображения больше исходного (с учётом x_o), то уменьшаем её
if ($y_o + $h_o > $h_i) $h_o = $h_i - $y_o; // Если высота выходного изображения больше исходного (с учётом y_o), то уменьшаем её
$img_o = imagecreatetruecolor($w_o, $h_o); // Создаём дескриптор для выходного изображения
imagecopy($img_o, $img_i, 0, 0, $x_o, $y_o, $w_o, $h_o); // Переносим часть изображения из исходного в выходное
$func = 'image'.$ext; // Получаем функция для сохранения результата
return $func($img_o, $image); // Сохраняем изображение в тот же файл, что и исходное, возвращая результат этой операции
}


$newi='new.jpg';

//resize_photo($mini, $newi);
resize($mini, false, 472); // Вызываем функцию
crop($mini,0,0,354,472);
echo '<table border="1"><td>Оригинал:<br><img border=1 src="1234.jpg"></td>'; echo '<td valign="top">3x4:<br><img border=1 src="123.jpg"></td></table>';
?>
Быстрый ответ:

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