Я не могу рассказать вам, как создавать векторные изображения в PHP, но, возможно, вам нужен немного другой подход - создавать растровые изображения в PHP и преобразовывать их в векторы? Это работает хорошо для черно-белых изображений, не уверенных в цветных.

аюсь создать векторную графику в PHP. Я попробовал Каир, и я не смог заставить его работать. Я понимаю, что imageMagick имеет векторную функциональность, но документация на php.net очень скудная, может кто-нибудь привести меня в правильном направлении? Идея заключается в том, чтобы иметь возможность сохранить графику в EPS. Мне также нужно иметь возможность использовать разные шрифты для вывода текста.

 zzzzBov07 янв. 2011 г., 08:07
вам не нужна оболочка для создания SVG с PHP. Вам просто нужно указать правильныйheader и распечатайте SVG, как вы бы с HTML.
 jef290408 янв. 2011 г., 18:48
Это то, что я не хочу выводить в браузер. Я хочу сохранить его как файл EPS.
 John Parker06 янв. 2011 г., 23:22
Рассматривали ли вы использовать PDF, а не EPS? (Там вообще больше поддержки для создания PDF.)
 jef290407 янв. 2011 г., 00:34
Нет, в основном файл нужно будет редактировать через Adobe Illustrator. Не уверен, что это возможно с PDF. Я собираюсь изучить это с SVG, который использует Cairo, но я не могу найти хорошую документацию по PHP-обертке для него. Мне нужно установить Каир, но я не знаю, как начать создавать образ. PHP просто пропускает ошибки везде

Ответы на вопрос(4)

как создавать векторные изображения в PHP, но, возможно, вам нужен немного другой подход - создавать растровые изображения в PHP и преобразовывать их в векторы? Это работает хорошо для черно-белых изображений, не уверенных в цветных.

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

что вы хотите создать eps, я все же хотел бы создать PDF. PDF-файлы полностью доступны для редактирования в любом крупном пакете: Adobe Illustrator, Corel Draw, Xara Pro и т. Д.

TCPDF работает хорошо, и есть множество примеров кода, включая шрифты и поддержку векторных изображений eps и ai, выводимых в PDF

Пример eps / aihttp://www.tcpdf.org/examples/example_032.pdf

Все примеры и код phphttp://www.tcpdf.org/examples.php

 Diablo22 июл. 2015 г., 17:06
Да, Imagemagick может создавать MVG. Я никогда не писал, что imagemagick может векторизовать растры. Откуда ты это взял? Независимо от ... Rolleyes ...
 jef290407 янв. 2011 г., 00:31
Хорошо, я просмотрел обе ссылки, а вторая делает невозможным делать то, что я хочу, с помощью Imagemagick & magickwand. Угадаю, брось это и посмотри в Каир
 CommonKnowledge21 июл. 2015 г., 23:11
Это неверно и не должно иметь положительного ответа. Imagemagick растеризует векторные изображения, но не векторизует растровые изображения.

что это довольно старый вопрос, но у меня была проблема несколько недель назад, и я решил ее для себя, надеюсь, этот ответ кому-нибудь поможет. Библиотека Cairo имеет PHP-привязки, но в ней также есть несколько ошибок, которые нарушают конвертацию между форматами - забудьте об этом. Нам нужно что-то родное здесь, на старте. Посмотрите на формат SVG - откройте векторное изображение в редакторе (я использую Inkscape) и сохраните его как файл SVG. После этого вы можете изменить его через php, как файл xml. Добавление пользовательских шрифтов в 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

Хорошо, у нас есть SVG с необходимыми шрифтами, но нам нужен EPS. Для конвертации SVG в EPS я использовал Inkscape с простым bash-скриптом svg2eps.sh:

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

Вы можете позвонить с php:

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

Другие советы:

1) Установите последнюю версию Inkscape. Я протестировал его на openSuse 12.3 - отлично работает.

2) Установите все пользовательские шрифты в системные шрифты.

Ваш ответ на вопрос