Próbuję tworzyć grafiki wektorowe w PHP. Ive tried Cairo i nie udało mi się go uruchomić. Rozumiem, że imageMagick ma funkcję wektorową, ale dokumentacja na php.net jest bardzo słaba, czy ktoś może mnie poprowadzić we właściwym kierunku? Pomysły mają umożliwić zapisanie grafiki na EPS. Muszę też móc używać różnych czcionek do wypisywania tekstu.Tworzenie grafiki wektorowej za pomocą PHP
Odpowiedz
Spróbuj tych linków:
http://www.imagemagick.org/script/magick-vector-graphics.php
i
http://www.imagemagick.org/discourse-server/viewtopic.php?f=10&t=10144
Ok, zajrzałem do obu linków, a drugi sprawia, że wydaje mi się niemożliwym zrobienie tego, co chcę z Imagemagick i magickwand. Zgadnij Zrzuć to i spróbuj zajrzeć do cairo – jef2904
To jest nieprawidłowe i nie powinno zawierać pozytywnej odpowiedzi. Imagemagick rasteryzuje obrazy wektorowe, ale nie wektoryzuje obrazów rastrowych. – CommonKnowledge
Tak Imagemagick może tworzyć MVG. Nigdy nie napisałem, że imagemagick potrafi wektoryzować rastry. Skąd to wybierzesz? Niezależnie od ... rolleyes ... – Diablo
Chociaż szukasz stworzyć EPS Chciałbym jeszcze mieć na celu tworzenie PDF. PDF są w pełni edytowalne w jakiejkolwiek poważnej pakietu: Adobe Illustrator, Corel Draw, Xara Pro itp
TCPDF działa dobrze i tam jest kilka próbek kodu w tym czcionek oraz wsparcie dla obrazów wektorowej EPS i ai wyjście do PDF
EPS/AI przykład http://www.tcpdf.org/examples/example_032.pdf
Wszystkie przykłady i php kod http://www.tcpdf.org/examples.php
wiem co to jest dość stare pytanie, ale miałem jakiś problem kilka tygodni temu i rozwiązać go dla siebie, nadzieję, że ta odpowiedź pomaga kogoś. Biblioteka w Kairze posiada powiązania PHP, ale ma również kilka błędów, które przerywają konwersję między formatami - zapomnij o tym. Na początku potrzebujemy czegoś rodzimego. Spójrz na format SVG - otwórz obraz wektorowy w edytorze (korzystam z Inkscape) i zapisz go jako plik SVG. Po tym możesz go zmienić za pomocą php tak jak plik xml. Dodawanie niestandardowych czcionek w 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, mamy SVG z potrzebnych czcionek, ale musimy EPS. Do konwersji SVG do EPS użyłem Inkscape z prostego skryptu bash svg2eps.sh:
#!/bin/bash
inkscape -f $1 -z -T -E $2
można nazwać to z PHP:
exec('/path/to/svg2eps.sh /path/to/in.svg path/to/out.eps');
Inne wskazówki:
1) Zainstaluj najnowszą wersję Inkscape. Testowałem go na openSuse 12.3 - działa świetnie.
2) Zainstaluj wszystkie czcionki niestandardowe w czcionkach systemowych.
Nie mogę ci powiedzieć, jak tworzyć obrazy wektorowe w PHP, ale może chcesz nieco inne podejście - tworzyć obrazy rastrowe w PHP i konwertować je do wektorów? Działa dobrze w przypadku białych obrazów o pewności co do koloru.
<?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);
Czy rozważałeś użycie formatu PDF zamiast EPS? (Generalnie istnieje większe wsparcie dla tworzenia plików PDF.) –
nope plik będzie wymagał edycji w programie Adobe Illustrator. Nie jestem pewien, czy to możliwe z plikiem PDF. Zamierzam zaglądać do tego z SVG, którego używa Kair, ale nie mogę znaleźć dobrej dokumentacji na opakowaniu PHP. Mam Cairo do zainstalowania, ale nie wiem, jak zacząć tworzyć obraz. PHP po prostu przepuszcza wszędzie błędy – jef2904
Nie potrzebujesz wrappera do svg z php. Musisz tylko podać poprawny "header" i wydrukować svg tak jak w HTML-u. – zzzzBov