|
|
|
| Я понимаю что дублирую темы но как уменьшить прапорционально картинку, и чтоб качество у ние было большое | |
|
|
|
|
|
|
|
для: CrazyAngel
(17.03.2006 в 23:52)
| | У меня вопрос нельзя ли просто узнать высоту и ширину картинки а потом прапорцианально их изменить в теге <img scr="" width="" height="" >
можно так или качество будет отвратным? | |
|
|
|
|
|
|
|
для: CrazyAngel
(18.03.2006 в 00:12)
| | Что это за функция
imageCopyResampled | |
|
|
|
|
|
|
|
для: CrazyAngel
(18.03.2006 в 00:12)
| | размеры картинки узнать можно....
$img_prop = getimagesize($image);
тогда в $img_prop[0] и $img_prop[1] будут размеры картинки...
(а насчет остального не знаю...
вопрос о функции...
ответы на такие вопросы хорошо знает яндекс...
http://1c.elias.ru/manuals/php42/f/imagecopyresampled.html | |
|
|
|
|
|
|
|
для: kasmanaft
(18.03.2006 в 05:28)
| | Ну гуру добайте помогите бедному начинающему | |
|
|
|
|
|
|
|
для: CrazyAngel
(18.03.2006 в 00:12)
| | > У меня вопрос нельзя ли просто узнать высоту и ширину картинки а потом прапорцианально их > изменить в теге <img scr="" width="" height="" >
> можно так или качество будет отвратным?
качество будет отвратное и грузится такая каротинка будет дольше.
приведите код функции, которой вы уменьшаете картинку, я попробую помочь. | |
|
|
|
|
|
|
|
для: CrazyAngel
(17.03.2006 в 23:52)
| | Приведу для полноты картины, код, уменьшающий изображение http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145. | |
|
|
|
|
|
|
|
для: cheops
(18.03.2006 в 13:25)
| | ну тогда вот нимного измененный код, который не изменяет качество картинки.
<?php
// Создадим уменьшенную копию изображения
// имя файла с которым будем работать
// файл должен находиться в том же месте, что и этот скрипт
$source="test.jpg";
// определим размеры уменьшенного изображения
$d_w=133;
$d_h=100;
// вызываем функцию изменения размера
resizeimg($source, 133, 100);
// выводим картинку на экран
?>
<img src="small.jpg">
<?
function resizeimg($filename, $w, $h)
{
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xFFFFFF);
// получим размеры исходного изображения
$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, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// в зависимости от типа файла выбирвем функцию сохранения в файл
switch ($size_img['mime'])
{
case 'image/jpeg':
// сохраняем в файл small.jpg
imagejpeg($dest_img, "small.$ext", 100);
break;
case 'image/gif':
// сохраняем в файл small.gif
imagegif($dest_img, "small.$ext", 100);
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
?>
|
| |
|
|
|
|
|
|
|
для: JIEXA
(18.03.2006 в 14:36)
| | А что мне надо изменить чтоб, картинка только выводилась а не сохранялась,
мне надо сохранить картинку в переменной, чтоб потом куда хочешь туда и всавляешь | |
|
|
|
|
|
|
|
для: CrazyAngel
(18.03.2006 в 19:22)
| | Вот маленько изменил код
<?
function resizeimg($filename, $w, $h)
{
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xffff00);
// получим размеры исходного изображения
$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;
}
//Выводим изображение
fpassthru($dest_img);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
?>
|
Поидеии он не должен сохранять картику в файл а просто должен вывести ее на экран, но происходят ошибки их вы можете посмотреть на http://www.toptizhka.ru/?act=cat
Вызываю функцию так
resizeimg('/img/'.$foo[largepic].'.jpg', 133, 100);
В $foo[largepic] находиться число картинки например 135
файл 135.jpg точно находиться в папке img | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 00:45)
| | Как сделать чтобы картинка могла назодиться в другом катологе? | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 09:52)
| | Блин, народ надайте умереть человеку | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 09:52)
| | >Как сделать чтобы картинка могла назодиться в другом
>катологе?
Хм... передавайте в параметре $filename путь до этого каталога. | |
|
|
|
|
|
|
|
для: cheops
(19.03.2006 в 13:15)
| | Передаю но не работает | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 13:31)
| | Вопрос до сих пор актуален | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 19:25)
| | А какая ошибка возникает? | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 13:31)
| | А путь верный? | |
|
|
|
|
|
|
|
для: cheops
(19.03.2006 в 21:24)
| | да | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 23:44)
| | Так какая ошибка то? | |
|
|
|
|
|
|
|
для: Евгений Петров
(19.03.2006 в 23:46)
| | Сейчас скажу | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 23:48)
| | Сейчас не получиться, но мне надо чтоб картинка сохранилась в переменной, а потом просто ее вывести | |
|
|
|
|
|
|
|
для: CrazyAngel
(19.03.2006 в 23:50)
| | Warning: getimagesize(/img/135.jpg): failed to open stream: No such file or directory in /home/toptizhka/www/index.php on line 40
Warning: Division by zero in /home/toptizhka/www/index.php on line 42
Warning: Division by zero in /home/toptizhka/www/index.php on line 58
Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/toptizhka/www/index.php on line 85
Warning: fpassthru(): supplied resource is not a valid stream resource in /home/toptizhka/www/index.php on line 88 | |
|
|
|
|
|
|
|
для: CrazyAngel
(20.03.2006 в 00:28)
| | /img/135.jpg
Точно есть
Вызываю функцию так
resizeimg('/img/'.$foo[largepic].'.jpg', 133, 100) | |
|
|
|
|
|
|
|
для: CrazyAngel
(20.03.2006 в 00:31)
| | Попробуйте вызывать так:
resizeimg('img/'.$foo[largepic].'.jpg', 133, 100)
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(20.03.2006 в 00:48)
| | Ну вот опять
С-П-А-С-И-Б-О | |
|
|
|
|
|
|
|
для: CrazyAngel
(17.03.2006 в 23:52)
| | у меня это сделано вот как:
function DecreaseImage($src_file, $dest_file, $width)
{
$src = ImageCreateFromJpeg($src_file);
if ($src)
{
$img_width = ImageSX($src);
$img_height = ImageSY($src);
$img_new_width = $width;
$img_new_height = ($img_height/100)*($img_new_width/($img_width/100));
$img_dest = ImageCreateTrueColor($img_new_width,$img_new_height);
imagefill($img_dest, 0, 0, imagecolorallocate($img_dest, 255,255,255));
ImageCopyResized($img_dest, $src, 0, 0, 0, 0, $img_new_width, $img_new_height, $img_width, $img_height);
ImageJpeg($img_dest, $dest_file, 75);
ImageDestroy($src);
ImageDestroy($img_dest);
}
else
{
ShowEMsg("Бяка");
return false;
}
return true;
}
|
| |
|
|
|