Я очень новичок в ImageMagick – я прочитал документацию, и теперь я пришел в первую реальную ситуацию. У меня есть изображение (300 * 500), и у меня есть текст, который должен быть как можно лучше (максимально возможный) в 20% от верхней части изображения. Так что текст должен быть в прямоугольнике 300 * 100, остальная часть изображения останется прежней. Возможно ли это с помощью магии изображения? Каков наилучший способ сделать это?
Я ищу решение для командной строки или расширения php. Простая иллюстрация ниже
Поскольку вы не предоставили образец изображения для тестирования и применения некоторого текста, я создал его с помощью следующей команды:
convert \ http://i.stack.imgur.com/RfJG6.png \ -crop 312x513+579+0 +repage \ so#12231624-right.png
Используя полученное изображение в качестве входа, запустите эти три команды, чтобы увидеть, как это будет работать (в Linux или Mac OS X):
width=$(identify -format %W so#12231624-right.png) convert \ -background '#0008' \ -gravity center \ -fill white \ -size ${width}x100 \ caption:"This is a sample text to test \ the automatic sizing of fonts by ImageMagick." \ so#12231624-right.png \ +swap \ -gravity north \ -composite \ output1.png convert \ -background '#0008' \ -gravity center \ -fill white \ -size ${width}x100 \ caption:"This is a even longer sample text. \ It also serves to test if automatic sizing of fonts \ by ImageMagick works as expected: just don't specify \ any fontsize, and let ImageMagick go for the best fit..." \ so#12231624-right.png \ +swap \ -gravity north \ -composite \ output2.png
Результирующие изображения:
(Результат не соответствует именно вашему кадру – но это только потому, что у моего тестового файла все еще есть белая, незаполненная рамка (как часть изображения), которую я не удосужился удалить …)
Другими словами: просто не беспокойтесь указывать размер шрифта с помощью -fontsize
. Только укажите размер региона, который должен иметь текстовую аннотацию. Тогда ImageMagick автоматически выберет наилучший соответствующий размер шрифта и будет использовать его.