|
|
|
| Я не умею работать с графикой в PHP.
Не буду заморачивать ваши головы всякой ерундой, а просто опишу, что мне нужна сделать.
---------- Задача №1 -------------
1. Я через форму загружаю картинку (формат может быть GIF, JPG, PNG).
2. Если она GIF или PNG формата, то конвертируем её в JPG.
3. Оригинал сохраняем в каталог mediabank/original/
4. Уменьшаем картинку до определенного размера.
5. На уменьшенную картинку накладываем заранее приготовленую и распологаем эту маленькую картинку в нижнем левом углу.
6. Сохраняем картинку в деректорию mediabank/small/
--------- Задача №2 --------------
1. Открываем деректорию images/news/big/
2. Все находящиеся в ней картинки уменьшаем до размера (11х11) # картинки все в GIF формате
3. Уменьшённые картинки пихаем в деректорию images/news/small/
Заранее спасибо! | |
|
|
|
|
|
|
|
для: JIEXA
(08.04.2005 в 17:49)
| | Отличная статья http://php5.ru/articles/image Мне очень понравилась. НЕ первому человеку ее советую. | |
|
|
|
|
|
|
|
для: Akira
(08.04.2005 в 17:59)
| | Да статья хорошая, но я так и не нашёл ответы на все вопросы!
[это сообщение я правил 10.5.2005] | |
|
|
|
|
|
|
|
для: JIEXA
(08.04.2005 в 17:49)
| | Хм... вообще готовый код можно посмотреть в фотогалереях в разделе downloads http://www.softtime.ru/info/downloads.php, в которых все перечисленные задачи решаются.
№ 1.
1. Загрузку файлов на сервер можно посмотреть в http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1693
2. Не уверен, что можно на лету сделать, здесь нужно Дизайнера спросить или ещё кого-то, кто с GDLib много работал...
3. Для этого после загрузки файла следует перебросить его из временного каталога в каталог назначения
<?php
if(copy($_FILES["filename"]["tmp_name"], "file/новое_имя_файла.txt"))
{
echo "Файлы успешно перенесены";
}
else
{
echo "Ошибка в перенесении файлов";
}
?>
|
4. Про создание уменьшенных копий изображений можно почитать в ссылке по теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145
5. Здесь имеется ввиду защита изображений? Об этом можно почитать в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=787
6. Это можно сделать при помощи функции copy http://www.softtime.ru/dic/id_dic=160&id_group=6
№ 2
1. Имена файлов в директории можно выяснить при помощи связки opendir+readdir. Подробности по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1718
2. Про создание уменьшенных копий изображений можно почитать в ссылке по теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145
3. Это можно сделать при помощи функции copy http://www.softtime.ru/dic/id_dic=160&id_group=6 | |
|
|
|
|
|
|
|
для: cheops
(08.04.2005 в 23:42)
| | Большое спасибо, буду ждать ответа Дизайнера насчёт №1 пункт 2. Боюсь это невозможно сделать :(. | |
|
|
|
|
автор: Никоза (09.04.2005 в 01:21) |
|
|
для: JIEXA
(09.04.2005 в 00:40)
| | Вот насчёт того, что сервер может (???) конвертировать gif в JPG...
если это возможно, ув. Дизайнер, очень прошу сообщить.
Иначе теоретически можно испортить настроение владельцу (например) службы знакомств, у которого позаолено загружать gif.
Для этого просто нужно загрузить анимационный gif, где первые пару минут будет хорошая фотография. а потом вдруг коварно выскочит порно!!!
Поэтому я и не люблю gif агрузку. (На моей службе знакомств это возможно...).
действительно ли можно конвертировать gif в JPG ? | |
|
|
|
|
|
|
|
для: Никоза
(09.04.2005 в 01:21)
| | Проверил работу с анимационными GIF - работает :)
Но, думаю, что необязательно сохранять в JPEG. Можно просто пересохранить GIF и так, как GD не поддерживат анимацию, то должен быть сохранен только первый кадр. Либо можно использовать PNG - в нем тоже не поддерживаеся анимация, а одна из его разновидностей (PNG-8) является почти полным аналогом GIF. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(09.04.2005 в 05:36)
| | Всем большое спасибо за помощь. Сейчас буду пробывать. | |
|
|
|
|
|
|
|
для: JIEXA
(09.04.2005 в 00:40)
| | Да, можно конвертировать. Принцип работы следующий:
1. Считываем изображение из файла во внутренний формат библиотеки GD.
2. Сохраняем изображение из внутреннего формата в любой другой (из поддерживаемых).
Чтобы это сделать, нужно заменить в коде только 1-2 строки, сохраняющие или выводящие в браузер изображение
<?
// Считываем из GIF
$image = imagecreatefromgif("softtime.gif");
//////////////
// Обработка
/////////////
// Сохранение JPEG
// Вывод заголовка нужен, если изображение выводим сразу в браузер
header ("Content-type: image/jpeg");
// Сохранение в файл
imagejpeg($image);
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(09.04.2005 в 05:31)
| | небольшая поправочка:
<?
header ("Content-type: image/jpeg");
// Вывод на экран
imagejpeg($image);
// Сохранение в файл
imagejpeg($image,"filename.jpg");
?>
| т.е. для сохранения нужно указать имя файла.
+ после имени файла можно третим параметром указать с каким качеством (от 0 - худшее, до 100 - лучшее) следует сохранить файл. Если не указывать, сохранит с качеством 75. | |
|
|
|
|
|
|
|
для: Sfinks
(09.04.2005 в 12:45)
| | cheops дал ссылку по задачи №1 пункт 5. Там был код я оттуда убрал лишнее для меня, и получился код:
<?
$imagefile = "test.jpg";
$img = imagecreatefromjpeg($imagefile);
// Если изображение создано
if ($img)
{
// Назначаем цвет
$color = imagecolorallocatealpha($img, 0, 255, 0, 50);
// Пишем текст поверх изображения
$box = imagettftext($img, 50, 0, 10, 150, $color, "arbat.ttf", "Торговая марка");
// Выводим изображение в браузер
header("Content-type: " .image_type_to_mime_type(IMAGETYPE_JPEG));
imagejpeg($img);
}
?>
|
Но мне нужно накладывать картинку, а не текст. А как я писал с самого начала:"Я не умею работать с графикой в PHP".
Мне не понятно как сделать, чтобы вместо текста накладывалась картинка... Может кто подскажет? | |
|
|
|
|
|
|
|
для: JIEXA
(09.04.2005 в 15:58)
| | help plz | |
|
|
|
|
|
|
|
для: JIEXA
(09.04.2005 в 15:58)
| | Вам необходимо использовать функцию imagecopyresampled()
http://www.softtime.ru/dic/id_dic=359&id_group=15 | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(09.04.2005 в 20:00)
| | ага спасибо.
P.S. это подтверждает, что надо выложить ваш "список фукций" для скачивания, т.к. я скачал самый последний "русский" мануал по пшп с php.net и там половина инфы на ангийском языке!!! | |
|
|
|
|
|
|
|
для: JIEXA
(09.04.2005 в 21:21)
| | Мучился, мучился так и не получилось. Не могли бы пример привести как скопировать одно изображение на другое? | |
|
|
|
|
|
|
|
для: JIEXA
(10.04.2005 в 23:49)
| | Пожалуйста
<?
$imagefile = "min.jpg";
$img = imagecreatefromjpeg($imagefile);
// Если изображение создано
if ($img)
{
// копируем на него другое.
$image_small = "logo.jpg";
$img_sm = imagecreatefromjpeg($image_small);
// Координаты точки вставки изображения
$x = 100;
$y = 100;
// Определяем размеры копируемого изображения
$size = getimagesize($image_small);
$w = $size[0];
$h = $size[1];
// Копируем одно изображение ($img_sm) на другое ($img)
$result = imagecopy($img, $img_sm, $x, $y, 0, 0, $w, $h);
if (!$result)
{
echo "Ошибка копирования изображения";
exit();
}
// Выводим изображение на экран
header("Content-type: image/jpeg");
imagejpeg($img);
}
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(11.04.2005 в 10:44)
| | Спасибо большое :) | |
|
|
|
|
|
|
|
для: JIEXA
(11.04.2005 в 14:33)
| | скопировать картинку друг на друга получилось, а как сделать, чтобы картинка, которую мы накладываем расположилась в левом нижнем углу? | |
|
|
|
|
|
|
|
для: JIEXA
(11.04.2005 в 17:35)
| | Всё с этим разобрался. Оказывается для размещения картинки в нижнем левом углу надо из длинны изображения, на которое мы
копируем картинку, вычесть длинну картинки - это будут координаты оси ox. Соответственно для определения координатов оси oy
надо из ширинны картинки, на которую мы копируем изображение, вычесть ширину картинки.
Вот на примере кода Дизайнера:
<?
$imagefile = "min.jpg";
$img = imagecreatefromjpeg($imagefile);
// Если изображение создано
if ($img)
{
// копируем на него другое.
$image_small = "logo.jpg";
$img_sm = imagecreatefromjpeg($image_small);
// Координаты точки вставки изображения
$x = 100;
$y = 100;
// Определяем размеры копируемого изображения
$size = getimagesize($image_small);
$w = $size[0];
$h = $size[1];
// Определяем координаты
$coord = getimagesize("min.jpg");
// Ось "OX"
$x = $coord[0]-$size[0];
// Ось "OY"
$y = $coord[1]-$size[1];
// Копируем одно изображение ($img_sm) на другое ($img)
$result = imagecopy($img, $img_sm, $x, $y, 0, 0, $w, $h);
if (!$result)
{
echo "Ошибка копирования изображения";
exit();
}
// Выводим изображение на экран
header("Content-type: image/jpeg");
imagejpeg($img);
}
?>
|
Ещё один простой вопрос:
А как сделать если изображение, которое накладываем, содержит прозрачную облость, то она не заполнялась белым, а оставалась прозрачной? | |
|
|
|
|
|
|
|
для: JIEXA
(11.04.2005 в 18:28)
| | Прозрачные области у вас в gif-файлах?
И сохраняете тоже в gif? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(12.04.2005 в 07:10)
| | Нет в jpg, но я разабрался. Нужно было ту маленькую картинку сохранить в формате PNG | |
|
|
|
|
|
|
|
для: JIEXA
(12.04.2005 в 19:03)
| | Да, PNG или GIF, т.к. JPEG не поддерживает прозрачность. | |
|
|
|