Это мой код ImageMagick, который отлично работает на моем веб-сервере, создав новое изображение с именем файла «coloured_font.png» в каталоге по умолчанию …
<?php $cmd = " -background none -pointsize 60 -font Times-Roman -fill red ". " -strokewidth 1 -stroke black label:\"google\" "; exec("convert $cmd coloured_font.png"); ?>
Но теперь я запускаю ImageMagick в Windows, который не будет создавать файлы изображений в папке по умолчанию, но приложения ImageMagick работают нормально (я протестировал, создав миниатюру). Итак, теперь моя идея – показать «coloured_font.png» на экране браузера, не сохраняя его нигде … поэтому, пожалуйста, кто-нибудь может помочь мне создать и отобразить изображение на экране, не сохраняя его.
Вы можете использовать специальный inline:
формат изображений (который ImageMagick поддерживает также для чтения файлов). Этот формат является базовым кодированием двоичных данных.
В командной строке (Linux):
my_base64_png="$( convert \ -background none \ -pointsize 60 \ -font Times-Roman \ -fill red \ -strokewidth 1 \ -stroke black \ label:\"google\" \ png:fd:1 \ | \ base64 -i - -o -)"
Эта команда использует несколько специальных трюков ImageMagick и оболочка в рукавах:
png:
сказать, что вывод должен быть в формате PNG; fd:1
; base64
для кодирования PNG; my_base64_png
. Теперь в вашем HTML вставляем данные изображения base64 (которые должны работать во всех современных, но не работают в старых браузерах ):
<IMG SRC="data:image/png;base64, echo "$(my_base64_png)" ALT="google" WIDTH=214 HEIGHT=57 VSPACE=5 HSPACE=5 BORDER=0 />
или
<IMG SRC="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAM4AAABJAQMAAABPZIvnAAAABGdBTUEAALGPC/xh BQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAAAZQTFRFAAAA/wAAG/+NIgAAAAF0Uk5TAEDm2GYAAAABYktH RACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB6ElEQVQ4y+3UQY7bIBQG4IeQ yqYaLhANV+iyi9FwpS69iGyiLuZYpepF6A1YskC8/uCA7SgZtVI3lcoiivkIxu/9 MdH/8U+N6el2pk0oFyibWyr1Q3+PlO2NqJV+/BnRPMjcJ9zrfJ/U+zQ9oAvo+QGF d+npPqFQn++TXElkrEpEJhAtlTBR6dNHUuzIMhFnEhxAmJDkKxlmt7ATXDDJYcaE r4Txqtkl42VYSH+t9KrD9b5nxZeog/LWGVHprGInGWVQUTvjDWXca5KdsowqyGSc DrZRlGlQUl4kQwpUjiSS9gI9VdECZhHFQ2I+UE2CHJQfkNxTNKCl0RkURqlLowJK 1h1p3sjc0CJD39D4BIqD7JvvpH/GAxl2/YSq9mtHSHknga7OKNOHKyEdaFC2Dh1w 9VSJemBeGuHgMuh24EynK03YM1Lr83OjUle38aVSfTblT424rl4LhdglsUag5RB5 uBJSJBIiELSzaAeIN0pUlEeZEMeClC4cBuH6mxOlgPjC3uLproUCWfy58WPN/MZR 86ghc888yNdD0Tj8eAucasl2I5LqX19I7EmEjaYjSb9R/G1SYfQA7ZBuT5H6WwDt UAfK1BOJmh/eZnKLeKvZ/vA8qonCpj1h6djfbqvW620Tva36++MXUkNDlFREMVkA AAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDgtMjJUMDg6Mzc6NDUrMDI6MDBTUnmt AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA4LTIyVDA4OjM3OjQ1KzAyOjAwIg/B EQAAAA50RVh0bGFiZWwAImdvb2dsZSJdcbX4AAAAAElFTkSuQmCC" ALT="google" WIDTH=214 HEIGHT=57 VSPACE=5 HSPACE=5 BORDER=0 />
Вам не составит труда перевести эту процедуру на PHP. 😉
Как я уже сказал, ImageMagick может прочитать этот inline:
формат inline:
(не используется здесь для чтения). Но для полноты позвольте мне показать вам, как:
convert \ 'inline:image/png;data:, iVBORw0KGgoAAAANSUhEUgAAAM4AAABJAQMAAABPZIvnAAAABGdBTUEAALGPC/xh BQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAA OpgAABdwnLpRPAAAAAZQTFRFAAAA/wAAG/+NIgAAAAF0Uk5TAEDm2GYAAAABYktH RACIBR1IAAAACXBIWXMAAABIAAAASABGyWs+AAAB6ElEQVQ4y+3UQY7bIBQG4IeQ yqYaLhANV+iyi9FwpS69iGyiLuZYpepF6A1YskC8/uCA7SgZtVI3lcoiivkIxu/9 MdH/8U+N6el2pk0oFyibWyr1Q3+PlO2NqJV+/BnRPMjcJ9zrfJ/U+zQ9oAvo+QGF d+npPqFQn++TXElkrEpEJhAtlTBR6dNHUuzIMhFnEhxAmJDkKxlmt7ATXDDJYcaE r4Txqtkl42VYSH+t9KrD9b5nxZeog/LWGVHprGInGWVQUTvjDWXca5KdsowqyGSc DrZRlGlQUl4kQwpUjiSS9gI9VdECZhHFQ2I+UE2CHJQfkNxTNKCl0RkURqlLowJK 1h1p3sjc0CJD39D4BIqD7JvvpH/GAxl2/YSq9mtHSHknga7OKNOHKyEdaFC2Dh1w 9VSJemBeGuHgMuh24EynK03YM1Lr83OjUle38aVSfTblT424rl4LhdglsUag5RB5 uBJSJBIiELSzaAeIN0pUlEeZEMeClC4cBuH6mxOlgPjC3uLproUCWfy58WPN/MZR 86ghc888yNdD0Tj8eAucasl2I5LqX19I7EmEjaYjSb9R/G1SYfQA7ZBuT5H6WwDt UAfK1BOJmh/eZnKLeKvZ/vA8qonCpj1h6djfbqvW620Tva36++MXUkNDlFREMVkA AAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDgtMjJUMDg6Mzc6NDUrMDI6MDBTUnmt AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA4LTIyVDA4OjM3OjQ1KzAyOjAwIg/B EQAAAA50RVh0bGFiZWwAImdvb2dsZSJdcbX4AAAAAElFTkSuQmCC' \ my_decoded.png
ImageMagick не требует image/png;
часть команды (она даже игнорирует ее), поскольку она может идентифицировать формат в любом случае через собственную встроенную магическую базу данных, но это не повредит …
Позвольте мне также указать, что длина командной строки ImageMagick ограничена 5000 символами, поэтому чтение inline:
данные не будут работать для больших изображений. (В настоящий момент я не знаю, какое ограничение для вложения данных изображения в HTML …)
Просто замените coloured_font.png
на coloured_font.php
в html-файле и создайте
coloured_font.php
с этим содержимым:
<?php header("Content-Type: image/png"); echo `convert -background none -pointsize 60 -font Times-Roman -fill red ". " -strokewidth 1 -stroke black label:\"google\" png:-`;
вот и все! Попробуйте открыть coloured_font.php
в своем браузере!
Вам придется создать временный файл
меры
temp_image.jpg
, запустив команду temp_image.jpg
в оболочке Отправить это как ответ http
$file = 'pathto/temp_image.jpg'; $type = 'image/jpeg'; // set appropriate type header('Content-Type:'.$type); // set content type header('Content-Length: ' . filesize($file)); readfile($file);
Удалить temp_image.jpg
Предположим, что это в getImage.php
, его можно указать как источник тега изображения
<img src="pathto/getImage.php" />