Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализация режимов наложения изображений. 
:(
    Опции темы
serezhka1986
Дата 6.2.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: -1
Всего: 0



Добрый день! Подскажите, пожалуйста, реально ли реализовать режими наложения изображений как в Фотошопе? Например, Затемнение, Мягкий свет, Жесткий свет, Перекрытие, Исключение и т.д.
Может есть какие-то готовые скрипты по данной теме? Или статьи? Поделитесь.  smile 
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
krundetz
Дата 6.2.2012, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



serezhka1986, в данной ветке форума как-то поднимался вопрос по алгоритму создания тени под шрифтом, можете поискать. Собственно ваш вопрос упирается в алгоритмы. Средством же может служить обычный GD2.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
$дмитрий
Дата 6.2.2012, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: нет
Всего: 45



Посмотри IM, там куча встроенных эффектов
PM MAIL   Вверх
serezhka1986
Дата 6.2.2012, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: -1
Всего: 0



Раньше никогда не работал с изображениями в php. По-этому вопрос может и нулячий, но подскажите решение, поскольку по мануалу пхп ничего не могу понять.
Если есть цвет в RGB, допустим (109, 0, 0). Мне его нужно задать определенному пикселю изображения.
Для этого, я так понял, используем int imagesetpixel (resource image, int x, int y, int col)
где 
image - изображение
x - координаты по ширине
y - координаты по высоте
col - цвет
Но цвет надо указывать не RGB? Как тогда его перевести в нужный?
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
cutwater
Дата 6.2.2012, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



http://php.net/manual/en/function.imagesetpixel.php

Документацию читать нынче уже не модно?


--------------------
user posted image
PM MAIL   Вверх
serezhka1986
Дата 6.2.2012, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: -1
Всего: 0



Модно, но знание английского хромает. А если у меня всего-навсего пустое изображение размером 500*400 созданное с помощью imagecreate и 3 значения цвета
Код

$my_image = imagecreate(500, 400);
$r = 109;
$g = 0;
$b = 0;

А мне нужно задать, например, цвет пикселю с координатами x=100 и y=250
Как быть?  smile 
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
cutwater
Дата 6.2.2012, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: нет
Всего: 10



serezhka1986, открыть ссылку еще раз. Посмотреть первый пример. Получить ответ на свой вопрос.

Понять что без знания английского делать нечего в программировании. Попробовать себя в другой нужной профессии.


--------------------
user posted image
PM MAIL   Вверх
serezhka1986
Дата 7.2.2012, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: -1
Всего: 0



Да.... Остроумно... Вместо того чтобы помочь, подсказать что-нибудь - надо поумничать. smile 
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
krundetz
Дата 7.2.2012, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



Код

<?php

$x = 500;
$y = 400;
 
$picX = 100;
$picY = 100;

$r = 109;
$g = 0;
$b = 0;

$img = imagecreatetruecolor($x, $y);

$color = imagecolorallocate($img, $r, $g, $b); 

imagesetpixel($img, $picX, $picY, $color);

 
header('Content-Type: image/png');
imagepng($img);

?>




--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
serezhka1986
Дата 7.2.2012, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: -1
Всего: 0



Спасибо огромное за помощь!  smile 
Вот нашел алгоритм некоторых режимов наложения .
Реализовал наложение двох слоев (фотка и слой с красной заливкой) по данному алгоритму. Примерно так:
Код

$uploaddir = 'uploads/';

 $uploadfile = $uploaddir . basename($_FILES["image"]["name"]);



if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
   header("Content-type: image/jpeg"); 
   $size = getimagesize($uploadfile);
   $source = imagecreatefromjpeg($uploadfile);
   @unlink($uploadfile);
   $im = imagecreatetruecolor($size[0], $size[1]);
   for ($x = 0; $x < $size[0]; $x++) {
       for ($y = 0; $y < $size[1]; $y++) {
   $colors=imagecolorsforindex($source, imagecolorat($source, $x,$y));
   $r=$colors['red'];
   $g=$colors['green'];
   $b=$colors['blue'];
   $r = ceil((255 * $r) / 255) ;
   $g = ceil((0 * $g) / 255 );
   $b = ceil((0 * $b) / 255 );
   $color = imagecolorallocate($im, $r,$g,$b);
   imagesetpixel($im, $x, $y, $color);
       }
   }
   imagejpeg($im, "", 100);
   imagedestroy($im);
 }

Но качество изображений отличается от фотошоповского:
Photoshop
user posted image
Script
user posted image
Есть ли какое-нибудь решение данной проблемы?

Это сообщение отредактировал(а) serezhka1986 - 7.2.2012, 14:08
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
krundetz
Дата 7.2.2012, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



посмотри в сторону ImageMagick, хотя здесь скорее всего применяется ещё один алгоритм повышения четкости изображения, либо более сложный механизм преобразования

Это сообщение отредактировал(а) krundetz - 7.2.2012, 15:04


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
serezhka1986
Дата 8.2.2012, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: -1
Всего: 0



Вот нашел алгоритмы почти всех режимов наложения в фотошопе: vanderlee.com
Есть у кого пример реализации полупрозрачности?
Мне надо на фотку наложить красный цвет одним из режимов наложения, но красный должен быть полупрозрачным (Непрозрачность: 50%)
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
krundetz
Дата 9.2.2012, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: нет
Всего: 69



serezhka1986, вроде как можно наложить одно изображение на другое, одно может быть полупрозрачным

также если не получиться встроенными средствами, то попробуй получить смещение которое получается при наложение искомой полу прозрачности, и смещай все цвета в этом направление, на заданную величину

Это сообщение отредактировал(а) krundetz - 9.2.2012, 09:06


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
serezhka1986
Дата 13.2.2012, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: -1
Всего: 0



Есть ли какой-нибудь вариант реализации размытия по Гауссу с радиусом 10 пикселей. 
Вот оригинал изображения:
user posted image
Вот размытие по Гауссу радиусом 10 пикселей в Фотошоп:
user posted image
Если использовать библиотеку GD, в часности функцию imagefilter() с параметром IMG_FILTER_GAUSSIAN_BLUR (размытие по Гауссу), то получается вот такое:
user posted image
Пробовал применять несколько раз, но добится желаемого результата не получается. Изображение хоть и немного размывается, но становится темным. 
Никто не встречал чего-нибудь подобного? 
Возможно такое можно еще как-нибудь реализовать, например, с помощью матриц скручивания?
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
Task
Дата 27.2.2012, 08:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.2.2012

Репутация: нет
Всего: нет



В GD существует функция imageconvolution (в мануалах указание, что она не документирована, но она работает, в любом случае можете проверить на своей версии GD), которая в качестве параметра принимает массив значений матрицы фильтра. Правда матрица только 3х3, но вполне позволяет применить фильтр к изображению, которого нет среди предустановленных в GD. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.1526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.