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
Trả lời
Hãy thử những liên kết này:
http://www.imagemagick.org/script/magick-vector-graphics.php
và
http://www.imagemagick.org/discourse-server/viewtopic.php?f=10&t=10144
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
Đ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
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
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
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.
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);
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). –
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
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