Jon Kirkman
Jon Kirkman

Reputation: 475

Server-side conversion of raster images to vector images

I would like to convert images that have been uploaded by the user (in various formats and conditions) to a vector image format such as .eps. I'm primarily working in PHP.

What options exist?

Upvotes: 6

Views: 5430

Answers (4)

Andras
Andras

Reputation: 196

Imagetracer is a free and open source (Public Domain) library and application which can be used on the server side. Disclaimer: I made these.

You can use ImageTracer.jar from

https://github.com/jankovicsandras/imagetracerjava

like this with PHP:

<?php exec("java -jar ImageTracer.jar input.png outfilename output.svg"); ?>

You can also use the JavaScript version with Node.js on the server side, here's the example code:

https://github.com/jankovicsandras/imagetracerjs/tree/master/nodecli

https://github.com/jankovicsandras/imagetracerjs/blob/master/nodetest/nodetest.js

Upvotes: 2

Your Common Sense
Your Common Sense

Reputation: 157896

PHP is not an image editor. It is a hypertext preprocessor.

You have to move to serverfault.com, or even better on some image processing resource, and ask there for some command line utility that can be run from PHP using the system() command.

Upvotes: -8

Vladimir
Vladimir

Reputation: 113

Definitelly you can do this with the Inkscape

here is the list of formats it supports What formats can Inkscape import/export?

and it can be of course used with the command line or exec() command Can Inkscape be used from the command line?

Upvotes: 2

Andrew
Andrew

Reputation: 14526

There are a small number of autotracing software projects released under GPU (for example, POTRACE that you could run via system commands. I can't attest to their quality. Tracing almost always requires some element of human supervision to avoid things looking like a mess of broken pottery, but you won't know until you try. Rather than triggering the tracer via PHP, I would use PHP simply to save incoming images to a temporary folder and then, through cronjob (one- or two-per-minute), crank through the holding folder in batches (you could pace it that way and avoid it being used as a way to DoS your site).

I'm thinking of doing something slightly similar (though not graphic related) for an upcoming project, and I'm considering doing all my heavy lifting on a desktop machine, which would fetch all incoming files and process them before FTPing them back to the server. I'm somewhat nervous about having any complex resource-intensive script like this running on a web server.

Upvotes: 7

Related Questions