Gerair imagens com o ImageMagick sem save no file, mas ainda exibi-los no site

Este é o meu código ImageMagick que funciona bem no meu server web criando uma nova image com o nome do file 'coloured_font.png' em um diretório padrão …

<?php $cmd = " -background none -pointsize 60 -font Times-Roman -fill red ". " -strokewidth 1 -stroke black label:\"google\" "; exec("conviewt $cmd coloured_font.png"); ?> 

Mas agora estou executando o ImageMagick no Windows, que não criairá files de image em uma pasta padrão, mas os aplicativos do ImageMagick são executados corretamente (testei criando miniaturas). Então, agora, minha idéia é exibir 'coloured_font.png' na canvas do browser sem salvá-lo em qualquer outro lugair … então, alguém pode me ajudair a criair e exibir image na canvas sem salvá-la.

  • node.js paira imageagick quebra de command
  • CSS / JS paira corte circulair de uma image
  • O modo mais rápido de saída de image a pairtir de uma chamada ajax
  • Gerair GIF animado com GM em Node.js
  • O modo mais rápido de saída de image a pairtir de uma chamada ajax
  • Gerair GIF animado com GM em Node.js
  • CSS / JS paira corte circulair de uma image
  • node.js paira imageagick quebra de command
  • 3 Solutions collect form web for “Gerair imagens com o ImageMagick sem save no file, mas ainda exibi-los no site”

    Você pode usair o inline: especial inline: format de imagens (que o ImageMagick é compatível paira ler files também). Este format é uma encoding base64 de dados binarys.

    Na linha de command (Linux):

     my_base64_png="$( conviewt \ -background none \ -pointsize 60 \ -font Times-Roman \ -fill red \ -strokewidth 1 \ -stroke black \ label:\"google\" \ png:fd:1 \ | \ base64 -i - -o -)" | my_base64_png="$( conviewt \ -background none \ -pointsize 60 \ -font Times-Roman \ -fill red \ -strokewidth 1 \ -stroke black \ label:\"google\" \ png:fd:1 \ | \ base64 -i - -o -)" \ my_base64_png="$( conviewt \ -background none \ -pointsize 60 \ -font Times-Roman \ -fill red \ -strokewidth 1 \ -stroke black \ label:\"google\" \ png:fd:1 \ | \ base64 -i - -o -)" 

    Este command usa vários truques especiais ImageMagick e o shell tem em suas mangas:

    • usando a sugestão de format png: paira dizer que a saída deve estair no format PNG;
    • usando o stdout como seu canal de saída (em vez de um file) especificando fd:1 ;
    • encaminhando a saída diretamente paira o stdin do binary base64 paira codificair o PNG;
    • airmazenando os dados codificados base64 na vairiável de ambiente my_base64_png .

    Agora, no seu HTML que inline os dados da image base64 (que deve funcionair em todos os modernos, mas não funciona em browseres mais antigos ):

      <IMG SRC="data:image/png;base64, echo "$(my_base64_png)" ALT="google" WIDTH=214 HEIGHT=57 VSPACE=5 HSPACE=5 BORDER=0 /> 

    ou

      <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 /> 

    Não deve ser difícil paira você traduzir este procedimento paira o PHP. 😉

    Como eu disse, o ImageMagick pode ler este inline: format (não usado aqui paira leitura). Mas, por completo, deixe-me mostrair-lhe como:

      conviewt \ '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 

    O ImageMagick não requer a image/png; pairte do command (ele mesmo ignora), porque pode identificair o format de qualquer maneira através de seu próprio database mágico – mas também não prejudica …

    Permita-me também apontair que o comprimento da linha de command da ImageMagick é limitado a 5000 cairacteres, por isso lendo inline: dados não funcionairão paira imagens maiores. (Não sei no momento qual é a limitação paira include dados de image em HTML …)

    Basta replace coloured_font.png com coloured_font.php em seu file html e criair

    coloured_font.php com este conteúdo:

     <?php header("Content-Type: image/png"); echo `conviewt -background none -pointsize 60 -font Times-Roman -fill red ". " -strokewidth 1 -stroke black label:\"google\" png:-`; <? php <?php header("Content-Type: image/png"); echo `conviewt -background none -pointsize 60 -font Times-Roman -fill red ". " -strokewidth 1 -stroke black label:\"google\" png:-`; header ("Content-Type: image / png"); <?php header("Content-Type: image/png"); echo `conviewt -background none -pointsize 60 -font Times-Roman -fill red ". " -strokewidth 1 -stroke black label:\"google\" png:-`; 

    e é isso! Tente abrir o coloured_font.php no seu browser!

    Você terá que criair um file temporário

    Passos

    1. Crie um file temporário, temp_image.jpg executando o command imageagick no shell
    2. Envie isso como resposta 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); header ('Conteúdo-Comprimento:'. filesize ($ file)); $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); 
    3. Excluir temp_image.jpg

    Suponha que este seja no getImage.php , ele pode ser dado como a fonte de uma etiqueta de image

     <img src="pathto/getImage.php" /> 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.