Jump to content
  • 0

PHP GD


Морская улиточка
 Share

Question

Здравствуйте! Ребята, я вот уже который день пытаюсь разобраться с данной библиотекой и написать необходимый скрипт, но из-за разнообразия функций и их параметров я часто просто путаюсь и потом вхожу в ступор на несколько часов для того чтобы последовательно разобраться в том что не так и в итоге по истечению многого времени я так и не смог реализовать задуманное...

 

Есть png картинка на которой по центру одним сплошным цветом изображено что-то а фон прозрачный и мне нужно сделать так чтобы я тот конкретный цвет поменял на другой конкретный цвет и оставил прозрачность. В интернете полно информации по данной теме и я заметил что реализаций тьма судя по тем скриптам которые предлагали люди но какие-то у меня просто не заработали а какие-то вообще делают совсем не то что нужно (что странно) и понятное дело я пытался вникать в каждую строку кода чтобы понять как должно всё происходить но всё равно, переделать или написать что-то своё я так и не смог и вот решил обратиться на данный форум с просьбой помочь.

 

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

 

В двух циклах по оси x и y и с одним условием по каждому пикселю нужно пробежаться, и если например он чёрный то меняем его на другой и всё. Всё вроде бы просто, но даже так я ничего не смог добиться, да что там говорить, я даже нормальный ник себе придумать не могу.

 

Объясните мне пожалуйста последовательно использования необходимых функций, работать собираюсь только с png, все изображения имеют пропорциональные размеры, везде фон прозрачный и самое изображение чёрного цвета который нужно заменить на любой другой.

 

Бесконечно благодарен тем кто хоть дочитал этот бред до конца ну а если Вы поможете и вообще поставите на путь истинный то я назову своего будущего ребёнка в Вашу честь. Спасибо за внимание!

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

<?php

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

$rgb = array(147,147,147); // цвет, который нужно заменить

$rgb_new = array(255,0,0); // цвет, на который меняем

$imgname = "./test.png"; // редактируемая картинка

$im = imagecreatefrompng($imgname);

imagefilter($im, IMG_FILTER_NEGATE);

imagefilter($im, IMG_FILTER_COLORIZE, $rgb_new[0], $rgb_new[1], $rgb_new[2]);

imagealphablending($im, false);

imagesavealpha($im, true);

imagepng($im);

imagedestroy($im);

?>

Edited by hypnocolor
Link to comment
Share on other sites

  • 0

Я бы посоветовал не использовать GD вообще, а воспользоваться чем-нибудь типа imagemagick.

Здравствуйте, если с GD я хоть как-то мало знаком то это вижу впервые, с первым попроще ориентироваться для меня на данный момент времени. Спасибо за Ваш совет!

<?php	header('Content-Type: image/png');	$rgb = array(147,147,147); // цвет, который нужно заменить	$rgb_new = array(255,0,0); // цвет, на который меняем	$imgname = "./test.png"; // редактируемая картинка	$im = imagecreatefrompng($imgname);	imagefilter($im, IMG_FILTER_NEGATE); 	imagefilter($im, IMG_FILTER_COLORIZE, $rgb_new[0], $rgb_new[1], $rgb_new[2]); 	imagealphablending($im, false);	imagesavealpha($im, true);	imagepng($im);	imagedestroy($im);?>

Всё замечательно! Вроде работает как нужно, точнее сначала заменял цвет не самой картинки а её границу по краям на 1 пиксель, я убрал imagefilter($im, IMG_FILTER_NEGATE); и стало заменять то что нужно - всю область самой графики, по моему данная функция в этом случаи просто лишняя... Не так ли? И переменную $rgb не понятно для чего Вы указали, ведь она нигде не задействована. Спасибо Вам за то что уделили мне время!

Edited by Морская улиточка
Link to comment
Share on other sites

  • 0

Всё замечательно! Вроде работает как нужно, точнее сначала заменял цвет не самой картинки а её границу по краям на 1 пиксель, я убрал imagefilter($im, IMG_FILTER_NEGATE); и стало заменять то что нужно - всю область самой графики, по моему данная функция в этом случаи просто лишняя... Не так ли? И переменную $rgb не понятно для чего Вы указали, ведь она нигде не задействована. Спасибо Вам за то что уделили мне время!

На самом деле, этот код — результат пары минут гугла, т.к. я, всё же, больше по фронтенду специализируюсь. Поэтому пока редактировал под ваш случай, мог упустить что-то ненужное из виду, да. Главное, что результат достигнут :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Only091
      Помогите пожалуйста, не получается сделать постраничную навигацию. Делал все по урокам. в Итоге получилось сделать два разных каталога один с фильтрами другой с постраничной навигацией. И теперь я пытаюсь объединить два каталога. Но не получается. Сами файлы урока в архике каталог. Буду очень благодарен если мне помогут! catalog.phpcatalogDB.js
      каталог.7z
    • By stonelabs
      Всем привет!

      Наша компания (https://stone-labs.com/) ищет команды (!) разработчиков для реализации ряда заказных проектов. Местоположение не важно - мы практикуем удаленную работу.
       
      Обязательные требования:
      Laravel или Symfony frameworks jQuery (UI), JavaScript, Ajax, Bootstrap MySQL REST API, опыт внедрения Third-party APIs английский на уровне чтения и понимания технической документации опыт в разработке веб приложений и их архитектуры с нуля корректное использование git & pull request flow работа в дневное время во временной зоне UTC +3  
      Будет плюсом, если у вашей команды есть:
      опыт с GitLab CI/CD, Jenkins опыт с MySQL Cluster, MongoDB, PostgreSQL, Redis опыт с Vue.js опыт Linux администрирования, SSH, Nginx, DevOps  
      Если вам интересно сотрудничество, пожалуйста, пишите на наш ящик wanted@stone-labs.com 
    • By Defroing
      <form method="POST" action= "action_handler.php" id="form"> <section class="table_1"> <table class="iksweb"> <tbody> <tr> <td rowspan="3"><b>История компании «Mc donald's»</b> <h3 class="the">Кто основал компанию «Mc donald's»?</h3> <section class="conteiner"> <div class="checkbox"> <input type="checkbox" class="i-6" id="i6" value="0" name="formDoor[]"> <label for="i6" tabindex="12">Роналд Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="i7" value="0" name="formDoor[]"> <label for="i7" tabindex="13">Рэй Крок</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_68" value="1" name="formDoor[]"> <label for="checkbox_68" tabindex="14">Братья Дик и Мак Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_170" value="0" name="formDoor[]"> <label for="checkbox_170" tabindex="14">Клинт Иствуд</label> </div> <div class="out-block out-6"></div> </section> </td> </tr> </tbody> </table> <div class="dsw"> <button class="b-6" tabindex="11" id="btn-1" type="submit" name="formSubmit">Отправить</button> </div> </form> <?php mysql_connect("localhost", "root", ""); mysql_select_db('olala') or die(mysql_error()); if(isset($_GET['submit'])){ $arr=$_GET; foreach ($arr as $key => $value) { $reg="/^check/";//отбираю нужные элементы if( preg_match ($reg,$key )) { //$new_mass[]=$arr[$key]; //print_r($new_mass); echo $arr[$key]; $sql_1="INSERT INTO `table_one` (`name`) VALUES('$arr[$key]')"; mysql_query($sql_1) or die(mysql_error()); } } } ?>  Создаю опросник и хочу, чтобы чекбоксы заносились в БД(таблицу пока не создавал). Хотелось узнать на счёт php кода, сможете подсказать, что в нём не так (дать какие нибудь советы). В openserver опросник пока не выкладывал.
    • By seoww
      Доброго времени суток. Я не сильно знающий веб-разработчик, но учусь. Начал создавать интернет магазин. Написал код самого сайта, посмотрел видео как делаются интернет-магазины и теперь не могу разобраться с PhpMyAdmin. Я не понимаю как она взаимодействует с сайтом. В интернете погуглил, так ничего дельного найти и не смог. Помогите пожалуйста.
      P.S сильно в меня камни не кидайте, я только учусь 
      Всем добра!
    • By Gmansurov
      Нужно отправить текст на сайт, не знаю как это сделать и не могу найти форумы по этим темам. Google Cloud Platform. Помогите пожалуйста.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy