Здравствуйте. Пытаюсь сделать конструктор сертификатов. Имеется готовое изображение, на которое нужно нанести текст ФИО. Вот как это выглядит: В редакторе стоит уменьшенная копия сертифика(картинки). Поверх, средствами css наложен блок с текстом, размер и положение которого регулируется с помощью js. Задача стоит в том, что после регулировки размера и положения текста нужно сохранить текст на оригинальном сертификате, а он, естественно, значительно больше картинки-превью, на которой идёт настройка текста. Поэтому, после сохранения, на сертификате с оригинальными размерами текст наносится мелкий и не в том месте, где надо. Надеюсь, поняли, в чём проблема. Попробовал вычислить коэффициент-разницу в размере картинки-превью и сертификата-оригинала. Считал по этой формуле: $k = $w_bigimg / $w_miniimg; - ширину большой картинки поделить на ширину маленькой, $font_size=$font_size * $k; - затем этот коэффициент умножил на размер шрифта (шрифт передаётся в пикселях), но в результате размер шрифта получается очень большой. Также данный коэффициент умножал на расстояние от верха картинки до текста (координата по оси Y), расчеты оказались неверными, текст стал намного выше, чем на превью в редакторе. Каким образом можно правильно рассчитать пропорциональное увеличение шрифта и координат до текста?
что - то про порции, не стал вчитываться сорь.. повангую: PHP: define("SIZE", 250); $width = 850; $height = 500; $newHeight = ceil($height/($width/SIZE)); $THEND = imagecreatetruecolor(SIZE,$newHeight); imagecopyresampled($THEND,$BACKGROUND,0,0,0,0,SIZE,$newHeight,$width,$height);
одну ошибку нашел и устранил - для создания нового изображения нужно использовать размер шрифта в пунктах, а я передавал значение в пикселях, теперь размер шрифта практически такой же, как на уменьшенной копии, т.е. формула для шрифта работает: $k = $w_bigimg / $w_miniimg; - ширину большой картинки поделить на ширину маленькой, $font_size=$font_size * $k; - коэффициент умножил на размер шрифта (размер должен быть в пунктах!) а вот с расчетом координаты до текста по оси Y что-то не то, высота меньше чем надо:
не знаю, как и почему, но когда прибавил высоту текста, то стало более менее: PHP: $pos_y = $pos_text_miniimg * $k + $text_height; про размеры изображений забыл сказать, 658 х 465 - уменьшенная копия в редакторе, 1280 х 905 - изображение, на которое требовалось нанести текст, наверное, можно тему закрывать, задача решена
Делайте все манипуляции на клиенте с помощью js К примеру ваша задача легко решается с помощью Fabric js На сервере, если нужно храните данные и их координаты
благодарю, посмотрел демо - http://fabricjs.com/demos/ решения мод мою задачу не увидел, там совсем другое, да и оно мне ненужно, что требовалось - уже сделано, работает как нужно.
спасибо за пример и что рассказали про более лучший вариант, классно, не спорю, возможно когда-нить изучу Fabric js , а он (Fabric js) сможет сразу 50 изображений обработать и выдать клиенту готовый результат в архиве? мой редактор может, собственно, именно для этого он и создавался, чтобы вставить список фамилий и на выходе получить готовые бланки.