|
| |
|
|
| |
для: FiX
(28.11.2006 в 11:43)
| | | Ну пожалуйста, хоть кто нибудь...
Пробовал заливать изображение функцией imagefill() до и после функции imagecopyresampled, ничего не меняется. Вообще не понимаю, в чем тут может быть дело? | |
| |
|
|
| |
|
|
| |
для: Trianon
(28.11.2006 в 09:20)
| | |
<?php
function resizeimg($filename, $w, $h)
{
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xEEEEEE);
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 1. Пропорции исходного изображения
// 2. Исходное изображение полностью помещалось на маленькой копии
// (не обрезалось)
if ($src_ratio>$ratio)
{
$old_h=$size_img[1];
$size_img[1]=floor($size_img[0]/$ratio);
$old_h=floor($old_h*$h/$size_img[1]);
}
else
{
$old_w=$size_img[0];
$size_img[0]=floor($size_img[1]*$ratio);
$old_w=floor($old_w*$w/$size_img[0]);
}
// исходя из того какой тип имеет изображение
// выбираем функцию создания
switch ($size_img['mime'])
{
// если тип файла JPEG
case 'image/jpeg':
// создаем jpeg из файла
$src_img = imagecreatefromjpeg($filename);
$ext="jpg";
break;
// если тип файла GIF
case 'image/gif':
// создаем gif из файла
$src_img = imagecreatefromgif($filename);
$ext="gif";
break;
}
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 43, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
imagefill($dest_img,0,0,0x999999);
// в зависимости от типа файла выбирвем функцию сохранения в файл
switch ($size_img['mime'])
{
case 'image/jpeg':
// сохраняем в файл small.jpg
imagejpeg($dest_img, "small.$ext");
break;
case 'image/gif':
// сохраняем в файл small.gif
imagegif($dest_img, "small.$ext");
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
?>
|
Заливает он нормально, но вот с функцией imagecopyresampled проблема...
Она уже сама обавляет рисунок с черным краем справа... До сих пор не могу разобраться. Помогите, пожалуйста ;) | |
| |
|
|
| |
|
|
| |
для: FiX
(28.11.2006 в 08:40)
| | | Залейте сперва весь кадр чем угодно.
А потом копируйте в нужное место картинку. | |
| |
|
|
| |
|
|
| |
для: Trianon
(27.11.2006 в 17:01)
| | | Большое спасибо!
Написал 43, такая же ситуация... Потом дошло - левая половина просто закрашивается в белый цвет! Поэтому я и думал, что не получается... Спасибо еще раз.
И последний вопрос. Можно изменить цвет заливки правой стороны? Например, на серый? | |
| |
|
|
| |
|
|
| |
для: FiX
(27.11.2006 в 15:53)
| | | Кадр у Вас шириной 150.(высотой 100)
А изображение после перемасштабирования шириной = 100*600/941 = 64
Разница = 150-64=86
Половина разницы = 43 | |
| |
|
|
| |
 2.5 Кб |
|
| |
для: Trianon
(27.11.2006 в 14:29)
| | | Я и так пробовал в тот раз.
Прикрепил файл, вот такой результат работы скрипта.
Размеры исходного изображения - 600*941 (ширина-высота),
размеры маленького - 150*100
> укажите половину разности ширины кадра и изображения
Это как? :)
В смысле, (600-150) / 2 ?
Получилось 225,
меняю строку
imagecopyresampled($dest_img, $src_img, 225, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
изображения совсем нет... | |
| |
|
|
| |
|
|
| |
для: FiX
(27.11.2006 в 14:09)
| | | >...И есть скрипт, который уменьшает размер фотографии с черными полями, но добавляет их справа.
>Как же сделать картинку посередине?..
Вот возьмите его, и вместо нуля в третьем параметре imagecopyresampled() укажите половину разности ширины кадра и изображения. Черное поле будет разбито пополам. | |
| |
|
|
| |
|
|
| |
для: Саня
(24.11.2006 в 19:23)
| | | Ну извините, но я снова прочитал все, и не нашел ответ на свой вопрос. Возможно, что-то я пропустил?
Безусловно, там есть ответ на то, как уменьшить фотографию без черных полей. И есть скрипт, который уменьшает размер фотографии с черными полями, но добавляет их справа.
Как же сделать картинку посередине?.. | |
| |
|
|
| |
|
|
| |
для: Fix
(24.11.2006 в 15:04)
| | | Если бы вы не поленились и прочитали хотя бы первые 10 постов той темы, то вы нашли бы ответ на свой вопрос. | |
| |
|
|
| |
|
|
| | Это своеобразное продолжение темы
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145
Там есть скрипт, который уменьшает фотографию и добавляет черные поля скраю, если фотка вертикальная.
Так вот мне надо, чтобы фотка была не слева, а в середине.
И еще: можно ли изменить цвет заливки? А то искал, даже намека на цвет не было... | |
| |
|
|
|