ПредишенСледващото

влизане

На този етап на развитие sveogo PHP програмисти предлага широк набор от функции за динамично генериране на изображения и да работят с тях. В тази статия ще ви покажа една техника, за да се създаде клас, които ще бъдат пуснати водни знаци върху същите тези изображения. Този клас ще работи с две изображения: оригиналния воден знак. Като допълнение, въвежда и трети вариант - нашия клас ще съдържа променливата на алфа. Това ще използвате алфа канал за нашия воден знак.

Информацията, съдържаща се в канал алфа е най-често избрани области - някаква форма или подреждане на цветни зони. Съхраняване на алфа канал се увеличава размерът на файла от 1/3. RGB изображения могат да имат до 24 алфа канали. Dot и индексирани изображения не могат да съдържат алфа канали.

Първа част - основите

Преди да започнете да пишете на самия клас, ние смятаме, функциите, които ще се използват в него. Ето списъка:

Както се вижда, в PHP достатъчно възможности за работа с графики. Нека целите на някои от тях и не е ясно на теория, но на практика всички garazdo по-лесно. Следователно, за да се разбере как да се работи с тях, ние ги използваме в нашия клас.

Избирането на пътя към целта

Сега, след като сме определили за целите на нашата "мини-проект" малко крачка назад и да поговорим за начините за нейното реализиране.

Да започнем с това, нашата молба получава две изображения - оригиналното изображение и самия воден знак. След това трябва да се определи размера на изображението (ширината и височината-ширина и височина). Тези данни, които трябва да поставите воден знак в центъра на изображението (на предположението, че размерът на воден знак е по-малък от чертежа).

След това ние ще трябва да наложи воден знак на оригиналното изображение. За да направите това, ние трябва да се определят цветовете (математически) наслагвания за третия.

И в крайна сметка, ние ще трябва да се покаже снимката в браузъра. В този случай, на чертежа се отваря директно от източника в маркера ""

Мисля, че теорията е достатъчно - от ключовите точки в него са разкрити достатъчно подробно. Сега преминете направо към писането на сценария.

Част втора - напише сценария

Да започнем с най-простите - напиши клас, който създава воден знак изображение. Наричаме я "воден знак" и да предпише код в "api.watermark.php" на файла. "Скелет" на класа ще има три функции:

Следващата стъпка е да се напише "воден знак" функция код клас. Доплащане файла "api.watermark.php" след реда код:

Сега вземете функция по-отблизо create_watermark ().
Първо го давате три параметъра:

(Важно е да се отбележи, че нашата функция се изображения като обекти, а не просто като начин за тях - но това ще бъде обсъдено по-късно)

На следващо място, ние трябва да ни се получи информация за всеки един от изображенията. Трябва да знаем това X и Y координати за местоположението на воден знак в средата на оригиналното изображение.

Следващата стъпка ще бъде създаването на нов, реални цветове на изображението със същите размери като тези на оригиналното изображение. Това изображение (променлива $ return_img) ще се използва за комбиниране на информация от оригиналните изображения (образ и воден знак).

Finale ще покаже нашите модифицирани изображения в уеб страница, която иска за него. На следващо място, помисли за останалите две помощни функции.

Трета част - помощни функции

В допълнение create_watermark функция в нашия клас воден знак има още две възможности. Продължаваме до изходния код на класа със следните редове:

А сега по-подробно. Първата ни функция е "_get_ave_color" отнема числени стойности на двата цвята и алфа канал. Тя се връща тяхната средна стойност. Тази функция, трябва да се определи цвета, който се получава при прилагане на пикселите на двете изображения.

Втората функция "_get_image_color" разбива изображението в червено (в червено), зелен (зелен) и синьо (синьо) компоненти (RGB-палитра). С вградената в PHP функции за графика (описание им бе в началото на статията), ние получаваме най-близката стойност цвят за новото изображение.

Освен това, дори проверих няколко секунди. На първо място, ако сте успели да получите точната стойност (променлива $ в), а след това се връща от функцията (връщане $ C). В противен случай, опитът Далай да изберете цвят с imagecolorallocate (функция). Ако това не помогне за постигане на резултатите, с функцията за помощ imagecolorclosest () просто се връща най-близката стойност цвят (най-точен).

Първото нещо, което пълзи сценария на изображението с помощта на две "за" цикли. Паралелно все още изчисляват координатите на всеки пиксел на водния знак.

По-нататъшни търсения на информация за RGB за kazhogo пиксел. Ако текущият пиксел не се намира в пресечната точка на оригиналното изображение и воден знак, нашия клас дублира само на пиксела за новото изображение. В случай на режима на пикселите в района на кръстовище, трябва да определим цвета си в резултат на наслагване на източника и шарката на воден знак.

За да се определи цвета на региона на пресичане, първо трябва да се получи стойността на дадена променлива RGB-воден знак, като се използва информацията, която сме получили в "за" примките. След това, с помощта на функцията "_get_ave_color" се определя от средната стойност на цвета за новото изображение. Следващата функция "_get_image_color", за да се определи цветовата гама, която ще се използва функцията "return_img".

В резултат на това след приключване на цикъла "за" имаме окончателното изображение с воден знак.

Сега ние, проверете нашия клас в случая.

Част четвърта - Test Drive

Да започнем с това, ние се нуждаем два файла. Първият се нарича "watermark_test.php" и в него се поставя следния код:

Etotgo дестинация файл е много проста: той показва оригиналното браузъра (main.jpg) и е получил (watermark.png, воден знак) на изображението.

Вторият файл се нарича "image.php" и и в него се поставя следния код:

Е, това е да се достигне до финала.
За тези, които искат да получат повече информация за създаване на изображения в популярни формати, за да даде няколко връзки:

За да тествате нашия скрипт, просто стартирате "watermark_test.php" файл в браузъра. В резултат на това, трябва да има две изображения - оригинал и водните знаци.


Общо гласове: 10; Средно: 4.8 Рейтинг:

други изделия

Свързани статии

Подкрепете проекта - споделете линка, благодаря!