Skip to content
This repository has been archived by the owner on Mar 19, 2024. It is now read-only.

xuegao-tzx/ImageTracerJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ImageTracerJava

ImageTracerJava(A library that can transfer pictures such as PNG to SVG)
ImageTracerJava(一个可以把png等图片转svg的开源Java库)

How to Use:

Including in Java projects

Add ImageTracer.jar to your build path
ImageTracer.jar 添加到构建路径

安装教程

Add the mavenCentral repository under the project's build.gradle
在 Project 的 build.gradle 下添加 mavenCentral 仓库

repositories {
    maven {
         url 'https://repo.huaweicloud.com/repository/maven/'
    }
    maven {
        url 'https://developer.huawei.com/repo/'
    }
    mavenCentral()
}

Add ImageTracerJava dependency under Module's build.gradle
在 Module 的 build.gradle 下添加 ImageTracerJava 依赖

implementation 'top.xuegao-tzx:ImageTracerJava:1.1.4.516'

then use the static methods:
然后使用静态方法:

import com.xcl.imagetracer_mod.ImageTracer;

...
ImageTracer.saveString(
        "output.svg" ,
        ImageTracer.imageToSVG("input.jpg",null,null)
);

With options and palette
带有选项和调色板的方法:

// Options
HashMap<String,Float> options = new HashMap<String,Float>();

// Tracing
options.put("ltres",1f);
options.put("qtres",1f);
options.put("pathomit",8f);

// Color quantization
options.put("colorsampling",1f); // 1f means true ; 0f means false: starting with generated palette
options.put("numberofcolors",16f);
options.put("mincolorratio",0.02f);
options.put("colorquantcycles",3f);

// SVG rendering
options.put("scale",1f);
options.put("roundcoords",1f); // 1f means rounded to 1 decimal places, like 7.3 ; 3f means rounded to 3 places, like 7.356 ; etc.
options.put("lcpr",0f);
options.put("qcpr",0f);
options.put("desc",1f); // 1f means true ; 0f means false: SVG descriptions deactivated
options.put("viewbox",0f); // 1f means true ; 0f means false: fixed width and height

// Selective Gauss Blur
options.put("blurradius",0f); // 0f means deactivated; 1f .. 5f : blur with this radius
options.put("blurdelta",20f); // smaller than this RGB difference will be blurred

// Palette
// This is an example of a grayscale palette
// please note that signed byte values [ -128 .. 127 ] will be converted to [ 0 .. 255 ] in the getsvgstring function
// the two number '8' below,you can change it to any number between 4 and 16,you need to change this by myself,so that you can make the SVG more clear!         
byte[][] palette = new byte[8][4];
for(int colorcnt=0; colorcnt < 8; colorcnt++){
	palette[colorcnt][0] = (byte)( -128 + colorcnt * 32); // R
	palette[colorcnt][1] = (byte)( -128 + colorcnt * 32); // G
	palette[colorcnt][2] = (byte)( -128 + colorcnt * 32); // B
	palette[colorcnt][3] = (byte)127; 		      // A
}

ImageTracer.saveString(
				"output.svg" ,
				ImageTracer.imageToSVG("input.jpg",options,palette)
);

Deterministic output

See options for deterministic tracing

Main Functions

主要功能

Function name Arguments Returns
imageToSVG String filename, HashMap<String,Float> options /*can be null*/, byte [][] palette /*can be null*/ String /*SVG content*/
imageToSVG BufferedImage image, HashMap<String,Float> options /*can be null*/, byte [][] palette /*can be null*/ String /*SVG content*/
imagedataToSVG ImageData imgd, HashMap<String,Float> options /*can be null*/, byte [][] palette /*can be null*/ String /*SVG content*/
imageToTracedata String filename, HashMap<String,Float> options /*can be null*/, byte [][] palette /*can be null*/ IndexedImage /*read the source for details*/
imageToTracedata BufferedImage image, HashMap<String,Float> options /*can be null*/, byte [][] palette /*can be null*/ IndexedImage /*read the source for details*/
imagedataToTracedata ImageData imgd, HashMap<String,Float> options /*can be null*/, byte [][] palette /*can be null*/ IndexedImage /*read the source for details*/

Helper Functions

Function name Arguments Returns
saveString String filename, String str void
loadImageData String filename ImageData /*read the source for details*/
loadImageData BufferedImage image ImageData /*read the source for details*/

ImageData is similar to ImageData here.

There are more functions for advanced users, read the source if you are interested. :)

Options

配置选项

Option name Default value Meaning
ltres 1f Error treshold for straight lines.
qtres 1f Error treshold for quadratic splines.
pathomit 8f Edge node paths shorter than this will be discarded for noise reduction.
colorsampling 1f Enable or disable color sampling. 1f is on, 0f is off.
numberofcolors 16f Number of colors to use on palette if pal object is not defined.
mincolorratio 0.02f Color quantization will randomize a color if fewer pixels than (total pixels*mincolorratio) has it.
colorquantcycles 3f Color quantization will be repeated this many times.
blurradius 0f Set this to 1f..5f for selective Gaussian blur preprocessing.
blurdelta 20f RGBA delta treshold for selective Gaussian blur preprocessing.
scale 1f Every coordinate will be multiplied with this, to scale the SVG.
roundcoords 1f rounding coordinates to a given decimal place. 1f means rounded to 1 decimal place like 7.3 ; 3f means rounded to 3 places, like 7.356
viewbox 0f Enable or disable SVG viewBox. 1f is on, 0f is off.
desc 1f Enable or disable SVG descriptions. 1f is on, 0f is off.
lcpr 0f Straight line control point radius, if this is greater than zero, small circles will be drawn in the SVG. Do not use this for big/complex images.
qcpr 0f Quadratic spline control point radius, if this is greater than zero, small circles and lines will be drawn in the SVG. Do not use this for big/complex images.

Process overview

See Process overview and Ideas for improvement

License

许可证

Modfiy Author:田梓萱
ImageTracerJava 在 Apache 2.0 License下获得许可

About

ImageTracerJava(An open source library that can easily convert PNG images to SVG images)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages