|
|
|
| Прошу сказать мне как можно сделать следующее(если возможно такое):
Мне нужно чтобы страница сама приабразовывала, при сохранении картинки, картинку большую в картинку маленькую и сохраняла и большую под именем *_big, и маленькую под именем *_sma
>В зарание спасибо! | |
|
|
|
|
|
|
|
для: GhosTer
(05.06.2005 в 15:24)
| | Скрипт для изменения размера изображения можно посмотреть в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145, при помощи его вы сможете создать уменьшенное изображение из большого. Обычно это делают на этапе загрузки изображений на сайт (например, в фотогалереях, которые вы можете загрузить из раздела downloads http://www.softtime.ru/info/downloads.php). Не могли бы вы подробнее описать как вам видится работа страницы? | |
|
|
|
|
|
|
|
для: cheops
(05.06.2005 в 15:34)
| | Большое спасибо! Это то, что мне нужно! Дальше я сделаю сам!
cheops ты меня выручил! | |
|
|
|
|
|
|
|
для: cheops
(05.06.2005 в 15:34)
| | Мне высветило ошибку:
Fatal error: Call to undefined function: imagecreatetruecolor() in c:\apache\htdocs\g\1.php on line 24
Я использовал следующий код:
<?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");
break;
case 'image/gif':
// сохраняем в файл small.gif
imagegif($dest_img, "small.$ext");
break;
}
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}
?>
|
Что делать? | |
|
|
|
|
|
|
|
для: GhosTer
(05.06.2005 в 17:44)
| | Это означает, что у вас не подключена библиотека расширения GDLib, о том как её подключить можно почитать в статье по ссылке http://www.softtime.ru/info/articlephp.php?id_article=24. Всё сводится к тому, чтобы снять комментарий (;) напротив строки
в конфигурационном файле php.ini (С:/Windows/php.ini). При обращении к скрипту
должен появится раздел gd. Если это так, библиотека подключена и приведённый выше скрипт будет работать. | |
|
|
|
|
|
|
|
для: cheops
(05.06.2005 в 20:44)
| | Я сделал как было сказано!
Но теперь следующая ошибка!
Прошу объяснить!
Код все тотже!
Предупреждение: Снабженный аргумент - не действительный ресурс образа в c:\apache\htdocs\g\1.php на линии 73 (imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);)
Предупреждение: Снабженный аргумент - не действительный ресурс образа в c:\apache\htdocs\g\1.php на линии 90 (imagedestroy($src_img); ) | |
|
|
|
|
|
|
|
для: GhosTer
(06.06.2005 в 14:23)
| | Видимо не создается образ исходного изображения src_img вот в этой части кода
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;
}
|
Файл с исходным изображением у вас как называется? test.jpg?
Он должен лежать в той же директории где лежит скрипт.
И если это Jpg, то нельзя использовать опции progressive и optimized при сохранении файла. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(06.06.2005 в 17:37)
| | называется также и лежит тамже, что сделать? | |
|
|
|
|
|
|
|
для: GhosTer
(05.06.2005 в 17:44)
| | Все замечательно работает, отличный пример!!
Вот только я не понял, как сделать, чтобы при создании маленькой картинки не появлялось черных плолос?.
Пример в архиве. | |
|
|
|
|
|
|
|
для: TuX
(30.06.2005 в 17:05)
| | Лично я, пользуясь этим же скриптом, в самом начале, сразу после гетимаджсайза делаю проверку на вертикальность/горизонтальность картинки
function resizeimg($filename, $w, $h)
{
$size_img = getimagesize("photo/".$filename);
if($size_img[0]<$size_img[1]){$a=$w; $w=$h; $h=$a;}
......... далее - по тексту}
|
и все получается без полей. | |
|
|
|