2011-01-06 5 views
8

Ich versuche, Vektorgrafiken in PHP zu erstellen. Ich habe es in Kairo versucht und ich konnte es nicht zur Arbeit bringen. Ich verstehe, dass imageMagick Vektorfunktionen hat, aber die Dokumentation auf php.net ist sehr schlecht. Kann mich jemand in die richtige Richtung führen? Die Idee ist, die Grafik in EPS speichern zu können. Ich muss auch in der Lage sein, verschiedene Schriftarten zu verwenden, um Text auszugeben.Erstellen von Vektorgrafiken mit PHP

+0

Haben Sie überlegt, PDF statt EPS zu verwenden? (Es gibt generell mehr Unterstützung für das Erstellen von PDF-Dateien.) –

+0

Nein, die Datei muss grundsätzlich über Adobe Illustrator bearbeitet werden können. Nicht sicher, ob das mit einem PDF möglich ist. Ich werde es mit SVG machen, was Cairo benutzt, aber ich finde keine gute Dokumentation über den PHP-Wrapper dafür. Ich habe Kairo installiert, aber ich weiß nicht, wie ich anfangen soll, ein Bild zu erstellen. PHP nur durch Fehler überall – jef2904

+0

Sie brauchen keinen Wrapper, um Svg mit PHP zu machen. Sie müssen nur die richtige 'header' angeben und die svg wie mit html ausdrucken. – zzzzBov

Antwort

0
+0

Ok, ich habe mir beide Links angeschaut und der zweite macht es scheinbar unmöglich, mit Imagemagick & magickwand zu machen, was ich will. Guess Ill fallen lassen und mehr in Kairo – jef2904

+0

Das ist falsch und sollte keine positive Antwort haben. Imagemagick rasterisiert Vektorbilder, vektorisiert aber keine Rasterbilder. – CommonKnowledge

+0

Ja Imagemagick kann MVG erstellen. Ich habe nie geschrieben, dass imagemagick die Raster vektorisieren kann. Wo hast du das her? Was auch immer ... rolleyes ... – Diablo

4

Obwohl Sie erstellen eps freuen würde ich immer noch eine PDF-Datei erstellen wollen. PDF-Dateien sind voll editierbar in jedem größeren Paket: Adobe Illustrator, Corel Draw, Xara Pro etc

TCPDF funktioniert gut und es gibt eine Reihe von Code-Beispielen einschließlich Schriften und Unterstützung für Vektor-Bilder eps und ai der Ausgabe im PDF

eps/ai Beispiel http://www.tcpdf.org/examples/example_032.pdf

die alle Beispiele und pHP-Code http://www.tcpdf.org/examples.php

2

ich weiß, was das ganz alte Frage, aber ich vor einiger Problem wenigen Wochen hatte und es für mich, hoffe, lösen diese Antwort jemand hilft. Cairo-Bibliothek haben PHP-Bindungen, aber es gibt auch einige Fehler, die Konvertierung zwischen Formaten brechen - vergessen Sie es. Wir brauchen etwas Eingeborenes hier beim Start. Schau dir das SVG-Format an - öffne dein Vektorbild im Editor (ich benutze Inkscape) und speichere es als SVG-Datei. Danach können Sie es wie eine XML-Datei über PHP ändern. Hinzufügen von benutzerdefinierten Schriften in 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, haben wir SVG mit den benötigten Fonts, aber wir brauchen EPS. Zur Umwandlung SVG EPS verwendete ich Inkscape mit einfachen Bash-Skript svg2eps.sh:

#!/bin/bash 
inkscape -f $1 -z -T -E $2 

Sie können es von PHP aufrufen:

exec('/path/to/svg2eps.sh /path/to/in.svg path/to/out.eps'); 

Weitere Tipps:

1) Installieren Sie die neueste Version von Inkscape. Ich habe es auf openSuse 12.3 getestet - funktioniert super.

2) Installieren Sie alle benutzerdefinierten Schriftarten in Systemschriftarten.

0

Ich kann Ihnen nicht sagen, wie man Vektorbilder in PHP erstellt, aber vielleicht möchten Sie ein bisschen anderen Ansatz - erstellen Sie Rasterbilder in PHP und konvertieren sie in Vektoren? Es funktioniert in Ordnung für schwarze & weiße Bilder nicht sicher über Farbe diejenigen.

<?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);