2011-01-06 35 views
8

Tôi đang cố tạo đồ họa véc tơ trong PHP. Ive đã thử Cairo và tôi không thể làm cho nó hoạt động được. Tôi hiểu rằng imageMagick có chức năng vector nhưng tài liệu trên php.net rất nghèo có thể một số dẫn tôi đi đúng hướng? Ý tưởng là để có thể lưu đồ họa vào EPS. Tôi cũng cần có khả năng sử dụng các phông chữ khác nhau để xuất văn bản.Tạo đồ họa vector bằng PHP

+0

Bạn có cân nhắc sử dụng PDF thay vì EPS không? (Thường có nhiều hỗ trợ hơn cho việc tạo PDF). –

+0

về cơ bản, tệp này cần phải có thể chỉnh sửa được thông qua Adobe Illustrator. Không chắc chắn nếu có thể với một PDF. Im sẽ xem xét thực hiện nó với SVG đó là những gì Cairo sử dụng nhưng tôi không thể tìm thấy tài liệu tốt trên wrapper PHP cho nó. Tôi đã cài đặt Cairo nhưng tôi không biết bắt đầu tạo hình ảnh như thế nào. PHP chỉ thông qua các lỗi ở khắp mọi nơi – jef2904

+0

bạn không cần một trình bao bọc để tạo svg bằng php. Bạn chỉ cần xác định đúng 'header' và in svg như bạn làm với html. – zzzzBov

Trả lời

0
+0

Ok tôi nhìn vào cả hai liên kết và thứ hai làm cho nó dường như không thể làm những gì tôi muốn với Imagemagick & magickwand. Đoán Ill rơi và nhìn vào cairo – jef2904

+0

Điều này là không chính xác và không nên có câu trả lời tích cực. Imagemagick không rasterize hình ảnh vector, nhưng nó không vector hóa hình ảnh raster. – CommonKnowledge

+0

Có Imagemagick có thể tạo MVG. Tôi chưa bao giờ viết imagemagick có thể vector hóa rasters. Bạn đã chọn từ đâu? Dù ... xe đẩy ... – Diablo

4

Mặc dù bạn đang tìm kiếm để tạo ra eps tôi vẫn sẽ nhằm mục đích tạo ra một PDF. PDF là hoàn toàn có thể chỉnh sửa trong bất kỳ gói chính: Adobe Illustrator, Corel Draw, Xara Pro vv

TCPDF hoạt động tốt và có một loạt các mẫu mã bao gồm phông chữ và hỗ trợ cho hình ảnh vector eps và ai đầu ra sang PDF

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

Tất cả các ví dụ và php đang http://www.tcpdf.org/examples.php

2

tôi biết điều này là câu hỏi khá cũ, nhưng tôi đã có một số vấn đề vài tuần trước và giải quyết nó cho bản thân mình, hy vọng câu trả lời này giúp ai đó. Thư viện Cairo có các ràng buộc PHP, nhưng nó cũng có vài lỗi phá vỡ chuyển đổi giữa các định dạng - quên nó đi. Chúng ta cần một cái gì đó bản địa ở đây khi bắt đầu. Nhìn vào định dạng SVG - mở hình ảnh vector của bạn trong trình soạn thảo (tôi sử dụng Inkscape) và lưu nó dưới dạng tệp SVG. Sau đó bạn có thể thay đổi nó thông qua php giống như file xml. Thêm phông chữ tùy chỉnh vào 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, chúng tôi có SVG với phông chữ cần thiết, nhưng chúng tôi cần EPS. Để chuyển đổi SVG tới EPS tôi đã sử dụng Inkscape với đơn giản bash script svg2eps.sh:

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

Bạn có thể gọi nó từ php:

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

lời khuyên khác:

1) Cài đặt phiên bản mới nhất của Inkscape. Tôi đã thử nghiệm nó trên openSuse 12.3 - hoạt động tốt.

2) Cài đặt tất cả phông chữ tùy chỉnh vào phông chữ hệ thống.

0

Tôi không thể cho bạn biết cách tạo hình ảnh vectơ trong PHP nhưng có lẽ bạn muốn một chút cách tiếp cận khác nhau- tạo hình ảnh raster trong PHP và chuyển đổi chúng thành vectơ? Nó hoạt động tốt cho màu đen & hình ảnh màu trắng không chắc chắn về màu sắc.

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