влизане
На този етап на развитие 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 Рейтинг:
други изделия
Свързани статии