За последние 24 часа нас посетили 73599 программистов и 10174 робота. Сейчас ищет 2881 программист ...

Найти координаты символа из текста при нанесении его на изображение

Тема в разделе "PHP для новичков", создана пользователем Познающий php, 23 мар 2017.

  1. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Реальных советов не дождался походу тут помогают только со стандартными заданиями типа как разделить строку по символу или заменить символ на на картинку в формате html

    В общем реализовал сам - еще не внедрял в основной код, но в черновую тест накидал и получил что хотел.

    Если вдруг кому понадобится и он найдет эту тему в поиске то алгоритм такой: Вместо каждой строки создаём новую прозрачную картинку размер ровно под эту строку. Далее строку разбиваем по символам которые необходимо заменить preg_split() и в цикле foreach отрисовываем по частям попутно заменяя наши символы 4 пробелами (4 чтобы квадрат получился, но размеры пробелов зависят от шрифта, надо покумекать чтобы это поуниверсальный было) и занося координаты пробелов в отдельный массив с координатами картинок. Нанесли строку на прозрачную картинку. Потом прошлись по массиву с координатами и нанесли картинки вместо пробелов. Далее уже прозрачный блок с текстом на основную картинку. И блоки выравниваем как нам надо. Кушать подано :D

    Самое главное для меня что это довольно универсально получилось, потому что в переменную с регулярным выражением можно загнать любые наборы. а массив с координатами юзать с ключами-картинками. Ну по крайней мере сейчас в 5 утра мне так кажется :p

    Можно это говно код и не очень ясно описал, но работает вроде как! Критику приветсвую ;)
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну так и выглядит как единственное возможное решение. Я бы примерно так и сделал, хотя я бы возможно не рисовал 4 пробела, а сразу подставлял нужную картинку.