Sto cercando di creare grafica vettoriale in PHP. Ho provato il Cairo e non sono riuscito a farlo funzionare. Capisco che imageMagick abbia funzionalità vettoriali ma la documentazione su php.net è molto scarsa, qualcuno può guidarmi nella giusta direzione? L'idea è di essere in grado di salvare l'immagine in EPS. Devo anche essere in grado di utilizzare diversi tipi di carattere per l'output del testo.Creazione di grafica vettoriale con PHP
risposta
Prova questi link:
http://www.imagemagick.org/script/magick-vector-graphics.php
e
http://www.imagemagick.org/discourse-server/viewtopic.php?f=10&t=10144
Ok ho guardato entrambi i link e il secondo mi sembra impossibile fare ciò che voglio con Imagemagick e magickwand. Indovina, lascia perdere e guarda più cairo. – jef2904
Questo non è corretto e non dovrebbe avere una risposta positiva. Imagemagick rasterizza le immagini vettoriali, ma non vettorializza le immagini raster. – CommonKnowledge
Sì Imagemagick può creare MVG. Non ho mai scritto che imagemagick può vettorializzare i raster. Da dove lo hai preso? Qualunque cosa ... rolleyes ... – Diablo
Anche se si sta cercando di creare eps Vorrei ancora mirare a creare un PDF. PDF sono completamente modificabili in qualsiasi pacchetto importante: Adobe Illustrator, Corel Draw, Xara Pro ecc
TCPDF funziona bene e c'è un sacco di esempi di codice inclusi i font e il supporto per le immagini vettoriali eps e ai di uscita in PDF
ENV/ai esempio http://www.tcpdf.org/examples/example_032.pdf
Tutto il codice esempi e php http://www.tcpdf.org/examples.php
so che cosa questo è abbastanza vecchia questione, ma ho avuto qualche problema poche settimane fa e risolvere per me, spero che questa risposta aiuta qualcuno. La libreria Cairo ha collegamenti PHP, ma ha anche alcuni bug che interrompono la conversione tra formati: non pensarci più. Abbiamo bisogno di qualcosa di nativo qui all'inizio. Guarda il formato SVG: apri l'immagine vettoriale nell'editor (io uso Inkscape) e salvalo come file SVG. Dopo di che puoi cambiarlo tramite php proprio come il file xml. Aggiunta di font personalizzati in formato SVG:
$text_path = 'm 100,200'
$font_name = 'Some_font.ttf';
$font_size = '20px';
$font = base64_encode('font_file_content');
$text = 'Bla bla bla';
$font_svg = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path d="' . $text_path . '" id="font_id_123"/>
<style type="text/css">
<![CDATA[
@font-face {
font-family: ' . $font_name . ';
src: url("data:font/ttf;charset=utf-8;base64,' . $font . '");
]]>
</style>
</defs>
<text style="font-family: ' . $font_name . '; font-size: ' . $font_size . ';">
<textPath xlink:href="#font_id_123">' . $text . '</textPath>
</text>
</svg>';
$content = file_get_contents($svg_file); // $svg_file - your vector image
$content = substr($content, 0, -6); // cut last '</svg>' tag from file
$newContent = $content . $font_svg . '</svg>'; // add font to the end
file_put_contents($svg_file, $newContent); // save changes
Ok, abbiamo SVG con i font necessari, ma abbiamo bisogno di EPS. Per la conversione in formato SVG in EPS ho usato Inkscape con semplici svg2eps.sh script bash:
#!/bin/bash
inkscape -f $1 -z -T -E $2
si può chiamare da PHP:
exec('/path/to/svg2eps.sh /path/to/in.svg path/to/out.eps');
Altri suggerimenti:
1) Installare la versione più recente di Inkscape. L'ho provato su openSuse 12.3 - Funziona alla grande.
2) Installare tutti i font personalizzati sui font di sistema.
Non posso dirti come creare immagini vettoriali in PHP, ma forse ti piacerebbe un approccio un po 'diverso, creare immagini raster in PHP e convertirle in vettori? Funziona bene per il nero & immagini bianche non sicure di quelle a colori.
<?php
$im = imagecreatetruecolor(500,500);
//draw something on $im
imagepng($im, 'image.png');
$url = 'http://server.com/image.png'; //change to your server's domain
$data = json_decode(file_get_contents('http://api.rest7.com/v1/raster_to_vector.php?url=' . $url . '&format=svg'));
if (@$data->success !== 1)
{
die('Failed');
}
$vec = file_get_contents($data->file);
file_put_contents('vectors.svg', $vec);
Avete considerato l'utilizzo del PDF anziché dell'EPS? (C'è generalmente più supporto per la creazione di PDF.) –
No, in pratica il file deve essere modificabile tramite Adobe Illustrator. Non sono sicuro se ciò è possibile con un PDF. Sto andando a cercare di farlo con SVG che è quello che usa Cairo ma non riesco a trovare una buona documentazione sul wrapper PHP per questo. Ho installato Cairo, ma non so come iniziare a creare un'immagine. PHP passa attraverso gli errori ovunque – jef2904
non hai bisogno di un wrapper per fare svg con php. Devi solo specificare l'intestazione 'corretta 'e stampare la svg come faresti con html. – zzzzBov