2011-01-06 8 views
8

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

+0

Avete considerato l'utilizzo del PDF anziché dell'EPS? (C'è generalmente più supporto per la creazione di PDF.) –

+0

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

+0

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

risposta

0
+0

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

+0

Questo non è corretto e non dovrebbe avere una risposta positiva. Imagemagick rasterizza le immagini vettoriali, ma non vettorializza le immagini raster. – CommonKnowledge

+0

Sì Imagemagick può creare MVG. Non ho mai scritto che imagemagick può vettorializzare i raster. Da dove lo hai preso? Qualunque cosa ... rolleyes ... – Diablo

4

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

2

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.

0

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); 
Problemi correlati