Code Monkey home page Code Monkey logo

androidsvgdrawable-plugin's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidsvgdrawable-plugin's Issues

Provide possibility to specify custom scaling

Most svg icons I download from internet have canvas size of about 512 pixels. Even if I specify xxxhdpi (which has factor of 4), the icon is still 128dp large, while icons on buttons normally have 24dp or so.

I know I can resize the icon in Inkscape, but this is cumbersome. Could it be possible to specify the scale factor manually, such as using "factor_6.4" in place of the density specifier?

Plugin does not work with com.android.tools.build:gradle:2.0.0-alpha9

The plugin does not seem to work with the 2.0.0-alpha9 of the android gradle plugin.

When I use buildToolsVersion '23.0.2' and classpath 'com.android.tools.build:gradle:2.0.0-alpha9' I get errors like these:

Error:(47, 26) No resource found that matches the given name (at 'src' with value '@drawable/ic_my_icon').

My task definition looks like this:

final String generatedResourcesDir = 'src/main/res-generated'

task svgToPng(type: SvgDrawableTask) {
    from = files('src/main/svg-png')
    to = file(generatedResourcesDir)
    createMissingDirectories = true
    overwriteMode = 'always'
    targetedDensities = ['mdpi', 'hdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi']
    outputFormat = 'PNG'
}

clean.doFirst {
    delete fileTree(dir: generatedResourcesDir, include: '**/*.png').getFiles()
}

The error can be reproduced using the current canary version of Android Studio 2.0.

Support XML vector drawables

Vector drawables are basically a subset of SVG, but on Android 5+ they can be used directly, instead of bitmaps. It would be nice if I could use this plugin to generate a couple of fallback bitmaps for the older Android versions.

Extra files in the `to` folder should be deleted.

If you rename an input SVG image, it will remain in the to folder. This will not reveal omitted references, until you clean the project. The plugin should delete all outstanding files in the to directory, that have no counterpart in the from directory.

For backward compatibility, the feature should be turned on with a parameter and be off by default.

SVG creates all-transparent image

This SVG creates just a transparent image โ€“ I'd expect a grey600 'H' and a grey600 circle around it. I cross-tested generation with batik-rasterizer.jar 1.7.1 and 1.8 โ€“ both render the SVG as expected.

FWIW, the filename is "ic_oeffi_stations_grey600_36dp-hdpi.svg".

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="72px" height="72px" viewBox="-32 -32 1088 1088">
    <!-- background -->
    <path
        d="M 512,512 m -464,0 a 464,464 0 1,0 928,0 a 464,464 0 1,0 -928,0
        M 512,512 m -368,0 a 368,368 0 1,1 736,0 a 368,368 0 1,1 -736,0"
        fill="#757575" />

    <!-- H -->
    <path d="M 370,760 v -500 m 0,240 h 280 m 0,260 v -500" style="fill:none;stroke:#757575;stroke-width:96" />
</svg>

9patch configuration bug

On a 10x12 mdpi svg, setting 9patch config to :

"content" : {
    "x" : [
        [4, 5]
    ],
    "y" : [
        [4, 5]
    ]
}

Will draw only one pixel segment for x and y content area... When it should be a segment of two pixels (from 4 to 5)!

Problem with batch created inkscape svg

This is probably not an issue associated with the androidsvgdrawable-plugin, but with an extension for inkscape (https://github.com/ray-hplus/inkscape-animation). Several layer in a single svg-file are batch exported into separate svg-files. In principle everything looks fine, but somehow the androidsvgdrawable-plugin does not create the desired pngs. The problem can be fixed by saving each svg individually, yet for long animations this is quite bothersome. I don't know what is wrong with the batch created svg-files, in order to fix the extension for inkscape.

I attached two svgs. If someone has the insight and time to check this issue, that would be really great. Thanks a lot.

inkscape_animation.zip

Crash when trying 9 patch..

This is my first try at the plugin, trying to create a 9patch which is an underline for a text header..
The plugin is crashing with a null pointer error.

My 9patch.json is

[
    {
        "name" : "header_underline",
        "stretch" : {
            "x" : [
                [0, 13],
            ],
            "y" : [
                [0, 63]
            ]
        },
            "content" : {
            "x" : [
                [0,13]
            ],
            "y" : [
                [64, 65]
            ]
          }
    }
]

the header_underline-xhdpi.svg is

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="14"
   height="66"
   id="svg2"
   version="1.1"
   inkscape:version="0.48.5 r10040"
   sodipodi:docname="header_underline-xhdpi.svg">
  <defs
     id="defs4" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="12.939394"
     inkscape:cx="-6.0222482"
     inkscape:cy="33"
     inkscape:document-units="px"
     inkscape:current-layer="layer1"
     showgrid="false"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0"
     inkscape:snap-page="true"
     inkscape:window-width="1920"
     inkscape:window-height="1031"
     inkscape:window-x="0"
     inkscape:window-y="25"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(-750.14288,-756.50507)">
    <path
       style="stroke:#ff00ff;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none"
       d="m 751.33599,821.50507 c 6.7848,0 5.16639,0 11.9512,0"
       id="path3052"
       inkscape:connector-curvature="0"
       sodipodi:nodetypes="cc" />
  </g>
</svg>

What am I doing wrong?

Modify Fill / Stroke Colour

Hi...Great plugin, this should be part of the android plugin!!

A suggestion for a new feature, it would be nice to be able to modify colours in the svg files when creating the icons.. For example, My icons need to be RGBA ffffffc8 which means they are impossible to see in Inkscape, so to edit I have to select all, change colour to black, and then back again..

If an option was possible, eg changeColor 0x00000000, 0xffffffc8 which would change all colours of the first to the second that would be even more awesome!

Thanks.

The output directory is not created if it does not exist

I would like to use the plugin to generate the images in the build directory. It's almost working but the output directory is not created by the plugin.

  1. I set the to option to build/generated-sources/res
  2. I added the following command to my build.gradle file:
android.sourceSets {
    main.res.srcDirs = ['src/main/res', 'build/generated-sources/res']
}

Then when I run the build with gradle, the image files are not created and I get a compilation error since the resource ids cannot be found. If I manually create the build/generated-sources/res directory, the files are generated and the build completes without error.

outputting to build, is clobbered when clean is used.. (gradle)

Configured

android{
  sourceSets{
        main.res.srcDirs = [main.res.srcDirs,"build/generated/res/main"]
    }
}

// create a task to convert SVG to PNG
task svgToPng(type: SvgDrawableTask) {
    from = file('src/main/svg-png')
    // specify the android res folder
    to = file('build/generated/res/main')
    // create qualified directories if missing
    createMissingDirectories = true
    // override files only if necessary
    overrideMode = 'ifModified'
    // the /res/drawable directory will contains mdpi resources
//  fallbackDensity = 'mdpi'
    // let generate PNG for the following densities only
    targetedDensities = ['mdpi', 'hdpi', 'xhdpi', 'xxhdpi']
    // relative path of the file specifying nine patch specs
    ninePatchConfig = file('src/main/svg-png/9patch.json')
    // output format of the generated resources
    outputFormat = 'PNG'
    to.mkdirs()
}

When a release build is done (i do this in jenkins ci) I add clean as the first task, the png files are generated under the correct directory, then at some stage further down the build the directories are cleared, then the build fails as it cant find the drawables.

I couldn't find the task that was doing this, removing the "clean" stopped the files from being cleared.

Gradle up-to-date check doesn't work reliably

task svgToPng(type: fr.avianey.androidsvgdrawable.gradle.SvgDrawableTask) {
    from = files('graphics')
    to = file('res')
    targetedDensities = ['hdpi', 'xhdpi', 'xxhdpi']
    outputFormat = 'PNG'
    outputType = 'mipmap'
}

My graphics folder contains three files:

graphics/ic_oeffi_directions_color_48dp-mdpi.svg
graphics/ic_oeffi_plans_color_48dp-mdpi.svg
graphics/ic_oeffi_stations_color_48dp-mdpi.svg

I removed all of the generated images. Then ran

$ gradle svgToPng
Incremental java compilation is an incubating feature.
:oeffi:svgToPng UP-TO-DATE

BUILD SUCCESSFUL

And if I try to build my whole project the launcher icons are missing and the build fails. I assume that's a bug in the plugin. When I try to switch res to res2 it generates the images there no prob.

More info:

$ gradle --version

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time:   2016-01-26 15:17:49 UTC
Build number: none
Revision:     UNKNOWN

Groovy:       2.4.5
Ant:          Apache Ant(TM) version 1.9.6 compiled on July 8 2015
JVM:          1.8.0_91 (Oracle Corporation 25.91-b14)
OS:           Linux 4.4.0-31-generic amd64

Useful error messages

Generally, error messages should say what's wrong and idealy also give a hint how to fix it.

When I define just from and to, all I get from the plugin is

$ gradle svgToPng
:svgToPng FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':svgToPng'.
> java.lang.NullPointerException (no error message)

By trial and error I found out when I add targetedDensities the error changes to

$ gradle svgToPng
:svgToPng

org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
Unable to transform src image
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:132)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
    at fr.avianey.androidsvgdrawable.SvgDrawablePlugin.transcode(SvgDrawablePlugin.java:434)
    at fr.avianey.androidsvgdrawable.SvgDrawablePlugin.transcode(SvgDrawablePlugin.java:367)
    at fr.avianey.androidsvgdrawable.SvgDrawablePlugin.execute(SvgDrawablePlugin.java:246)
    at fr.avianey.androidsvgdrawable.gradle.SvgDrawableTask.svgToDrawable(SvgDrawableTask.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
    [...]
org.apache.batik.transcoder.TranscoderException: null

Both messages are not helpful to the user.

Batik does not handle properly vendor specific style

When a style attribute contain a vendor specific style, batik fails to evaluate properly the entire style attribute :

<path
       inkscape:connector-curvature="0"
       id="path2990-2"
       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:awards;-inkscape-font-specification:awards;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
       d="m -558.64901,514.55271 c -0.79754,3e-5 -1.48114,0.28487 -2.05078,0.85449 -0.56967,0.56969 -0.85451,1.25329 -0.8545,2.05078 l 0,7.31446 c -10e-6,1.02541 0.36457,1.8913 1.09375,2.59765 l 3.17872,3.17871 c -1.11656,1.02541 -1.98814,2.23309 -2.61476,3.62305 -0.62663,1.38998 -0.93994,2.8711 -0.93993,4.44336 -10e-6,3.00781 1.07095,5.58269 3.21289,7.72461 2.14191,2.14192 4.71677,3.21289 7.72461,3.21289 3.00779,0 5.58265,-1.07097 7.72461,-3.21289 2.14189,-2.14192 3.21286,-4.7168 3.21289,-7.72461 -3e-5,-1.57226 -0.31335,-3.05338 -0.93995,-4.44336 -0.62665,-1.38996 -1.49823,-2.59764 -2.61474,-3.62305 l 3.17871,-3.17871 c 0.72914,-0.70635 1.09372,-1.57224 1.09375,-2.59765 l 0,-7.31446 c -3e-5,-0.79749 -0.28486,-1.48109 -0.85449,-2.05078 -0.56969,-0.56962 -1.25328,-0.85446 -2.05078,-0.85449 z m 8.20312,18.62793 c 0.0911,-0.27343 0.27342,-0.41015 0.54688,-0.41016 0.27341,10e-6 0.45571,0.13673 0.54687,0.41016 l 1.33301,3.24707 3.38379,0 c 0.15948,10e-6 0.2962,0.0684 0.41016,0.20508 0.1139,0.13673 0.17086,0.27345 0.17089,0.41015 -3e-5,0.20509 -0.0797,0.35321 -0.23925,0.44434 l -2.8711,1.94824 c 0.61522,2.30144 0.93422,3.48633 0.95704,3.55469 0.0227,0.0456 0.0341,0.10248 0.0341,0.1709 -2e-5,0.15951 -0.057,0.29053 -0.1709,0.39306 -0.11396,0.10259 -0.25067,0.15381 -0.41015,0.15381 -0.13675,0 -0.25068,-0.0456 -0.3418,-0.13672 l -2.80274,-2.15332 -2.80273,2.15332 c -0.0911,0.0911 -0.2051,0.13672 -0.3418,0.13672 -0.15952,0 -0.29624,-0.0513 -0.41015,-0.15381 -0.11395,-0.10248 -0.17092,-0.23355 -0.1709,-0.39306 -2e-5,-0.0684 0.0114,-0.12532 0.0341,-0.1709 0.63801,-2.23307 0.95701,-3.40657 0.95703,-3.52051 l -2.87109,-1.98242 c -0.15952,-0.0911 -0.23927,-0.23925 -0.23926,-0.44434 -1e-5,-0.1367 0.057,-0.27342 0.1709,-0.41015 0.11391,-0.13671 0.25063,-0.20507 0.41016,-0.20508 l 3.38379,0 1.333,-3.24707 z m -4.5459,-13.53516 0,5.12696 c -2e-5,0.38739 -0.14242,0.72349 -0.42725,1.00829 -0.28484,0.28486 -0.63233,0.42727 -1.04247,0.42725 -0.41017,2e-5 -0.75766,-0.14239 -1.04249,-0.42725 -0.28483,-0.2848 -0.42725,-0.6209 -0.42724,-1.00829 l 0,-5.12696 c -10e-6,-0.38734 0.14241,-0.72344 0.42724,-1.0083 0.28483,-0.28481 0.63232,-0.42721 1.04249,-0.42724 0.41014,3e-5 0.75763,0.14243 1.04247,0.42724 0.28483,0.28486 0.42723,0.62096 0.42725,1.0083 z m 6.56251,0 0,6.5625 c -3e-5,0.41018 -0.14244,0.75768 -0.42726,1.04248 -0.28484,0.28485 -0.63234,0.42727 -1.04247,0.42725 -0.41018,2e-5 -0.75767,-0.1424 -1.04249,-0.42725 -0.28484,-0.2848 -0.42726,-0.6323 -0.42724,-1.04248 l 0,-6.5625 c -2e-5,-0.38734 0.1424,-0.72344 0.42724,-1.0083 0.28482,-0.28481 0.63231,-0.42721 1.04249,-0.42724 0.41013,3e-5 0.75763,0.14243 1.04247,0.42724 0.28482,0.28486 0.42723,0.62096 0.42726,1.0083 z m 6.5625,0 0,5.12696 c -4e-5,0.38739 -0.14245,0.72349 -0.42726,1.00829 -0.28485,0.28486 -0.63235,0.42727 -1.04247,0.42725 -0.41019,2e-5 -0.75768,-0.14239 -1.04249,-0.42725 -0.28485,-0.2848 -0.42726,-0.6209 -0.42724,-1.00829 l 0,-5.12696 c -2e-5,-0.38734 0.14239,-0.72344 0.42724,-1.0083 0.28481,-0.28481 0.6323,-0.42721 1.04249,-0.42724 0.41012,3e-5 0.75762,0.14243 1.04247,0.42724 0.28481,0.28486 0.42722,0.62096 0.42726,1.0083 z" />

The -inkscape-font-specification:awards prevents the fill color to be applied...

  • Expected : white
  • Effective : parent fill

NullPointerException in the plugin

I get the following exception:

Caused by: java.lang.NullPointerException
    at fr.avianey.androidsvgdrawable.SvgDrawablePlugin.execute(SvgDrawablePlugin.java:146)
    at fr.avianey.androidsvgdrawable.gradle.SvgDrawableTask.svgToDrawable(SvgDrawableTask.java:67)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 47 more

I use the 1.0.2 version. Probably I did some configuration wrong (parameters seem to be null), but the error could be better.

Generate density specific pngs?

Maybe I'm missing something, but how do I create density specific png?

When you create png's usually you want to have at least 2 svg. One for mdpi and another for hdpi. This way images that have straight lines will not be blurry.

So here can be a few ways to create other densities from mdpi and hdpi files:

====== (1) ======
mdpi x1 -> mdpi
hdpi x1 -> hdpi
mdpi x2 -> xhdpi
mdpi x3 -> xxhdpi

or
====== (2) ======
mdpi x1 -> mdpi
hdpi x1 -> hdpi
mdpi x2 -> xhdpi
hdpi x2 -> xxhdpi

For now I just need to do (1) to avoid blurry image.

Right now if you use only

  • mdpi -> hdpi will be blurry.
  • hdpi -> mdpi and xhdpi will be blurry

how to execute for flavors in gradle?

I have a project with multiple flavors and a main - most of the svg files live in main, but the main app icons are in each flavour

I create a configuration for each flavour and the main, but the plugin executes for all flavours not just the one being built..

Is there a way with this plugin to link each configuration to a flavour?

Disable fallbackDensity completely

The Android Lint now shows a warning when putting bitmap in the densityless folder. It would be great when you can disable the fallbackDensity feature completely.

Support multiple input directories

Something like :

task svgToFlavor1(type: fr.avianey.androidsvgdrawable.gradle.SvgDrawableTask) {
    // specify where to pick SVG from
    from = ['src/main/svg-flavor1', 'src/main/svg-flavor1-flavor2']
    // ...
}

Support SVG mask via <image>

Allow the use of .svgmask files that will be used to generate other .svg files.

something-mdpi.svgmask :

<image x="10" y="20" width="80" height="80" xlink:href="${pattern}" />

where ${pattern} is a regexp pointing to .svg files to use as a reference...

Allow raw generation to unqualified target directory

when using to = file("path") and no target density, it would be great to generate resources to path without adding a -density qualifier... USefull for RAW or PNG generation for using with LibGDX TexturePacker

dimensions ratio

The generated file from this SVG don't have the same dimensions ratio

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   x="0px"
   y="0px"
   width="512"
   height="512"
   id="svg378">
  <metadata
     id="metadata3014">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs380">
    <clipPath
       id="clipPath8018">
      <rect
         width="512"
         height="512"
         x="0"
         y="0"
         id="rect8020"
         style="fill-opacity:0.67000002" />
    </clipPath>
  </defs>
  <g
     clip-path="url(#clipPath8018)"
     id="flag"
     style="fill-rule:evenodd">
    <rect
       width="730.16998"
       height="512"
       x="-610.60999"
       y="-511.56"
       transform="scale(-1,-1)"
       id="rect149"
       style="fill:#ffffff" />
    <path
       d="m 495.86,1148 a 163.79,163.79 0 1 1 -327.58,0 163.79,163.79 0 1 1 327.58,0 z"
       transform="matrix(0.6869,0,0,0.6869,-88.735,-532.54)"
       id="path607"
       style="fill:#ffffff" />
    <path
       d="m 733.7,381.73 a 227.74,227.74 0 1 1 -455.48,0 227.74,227.74 0 1 1 455.48,0 z"
       transform="matrix(0.63784,0,0,0.64461,-74.972,16.483)"
       id="path635"
       style="fill:#c70000" />
    <rect
       width="127.92"
       height="26.201"
       x="-127.97"
       y="45.308998"
       transform="matrix(0.65400174,-0.75649304,0.75649304,0.65400174,0,0)"
       id="rect636"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="-127.97"
       y="81.527"
       transform="matrix(0.65400174,-0.75649304,0.75649304,0.65400174,0,0)"
       id="rect637"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="-127.97"
       y="45.308998"
       transform="matrix(0.65400174,-0.75649304,0.75649304,0.65400174,0,0)"
       id="rect638"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="-127.97"
       y="45.308998"
       transform="matrix(0.65400174,-0.75649304,0.75649304,0.65400174,0,0)"
       id="rect639"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="-127.97"
       y="118.52"
       transform="matrix(0.65400174,-0.75649304,0.75649304,0.65400174,0,0)"
       id="rect640"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="-127.97"
       y="45.308998"
       transform="matrix(0.65400174,-0.75649304,0.75649304,0.65400174,0,0)"
       id="rect641"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="-127.97"
       y="45.308998"
       transform="matrix(0.65400174,-0.75649304,0.75649304,0.65400174,0,0)"
       id="rect643"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="320.64999"
       y="-330.34"
       transform="matrix(0.64886,0.7609,-0.7609,0.64886,0,0)"
       id="rect644"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="320.64999"
       y="-257.13"
       transform="matrix(0.64886,0.7609,-0.7609,0.64886,0,0)"
       id="rect645"
       style="stroke-width:1pt" />
    <path
       d="m 417.55,133.19 78.602,-67.814 14.641,16.953 -83.996,75.519 -9.2471,-24.659 z"
       id="path649"
       style="fill:#ffffff" />
    <rect
       width="125.1"
       height="25.643999"
       x="-42.832001"
       y="-633.04999"
       transform="matrix(-0.64282,0.76602,-0.76881,-0.63948,0,0)"
       id="rect646"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="320.64999"
       y="-294.12"
       transform="matrix(0.64886,0.7609,-0.7609,0.64886,0,0)"
       id="rect642"
       style="stroke-width:1pt" />
    <rect
       width="125.1"
       height="25.643999"
       x="-42.832001"
       y="-668.48999"
       transform="matrix(-0.64282,0.76602,-0.76881,-0.63948,0,0)"
       id="rect647"
       style="stroke-width:1pt" />
    <rect
       width="125.1"
       height="25.643999"
       x="-42.832001"
       y="-596.84003"
       transform="matrix(-0.64282,0.76602,-0.76881,-0.63948,0,0)"
       id="rect648"
       style="stroke-width:1pt" />
    <path
       d="m 104.6,236.68 c 4.5919,36.974 11.297,78.175 68.199,82.455 21.328,1.2776 62.817,-5.0735 77.061,-63.19 18.688,-55.829 74.975,-71.88 113.28,-41.613 21.718,14.166 27.727,36.666 29.283,53.557 -1.7386,54.243 -32.874,101.2 -72.823,122.14 -45.93,27.3 -109.56,27.87 -165.3,-13.49 -25.12,-23.57 -60.219,-67.02 -49.7,-139.86 z"
       id="path653"
       style="fill:#3d5897" />
    <path
       d="m 435.91,370.59 78.734,67.661 -14.591,16.997 -87.156,-71.851 23.013,-12.807 z"
       id="path654"
       style="fill:#ffffff" />
    <rect
       width="127.92"
       height="26.201"
       x="270.57001"
       y="233.21001"
       transform="matrix(0.64886,0.7609,-0.7609,0.64886,0,0)"
       id="rect658"
       style="stroke-width:1pt" />
    <path
       d="m -16.188,437.25 78.602,-67.814 14.641,16.953 -83.996,75.519 -9.2471,-24.659 z"
       id="path657"
       style="fill:#ffffff;stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="270.57001"
       y="196.99001"
       transform="matrix(0.64886,0.7609,-0.7609,0.64886,0,0)"
       id="rect655"
       style="stroke-width:1pt" />
    <rect
       width="127.92"
       height="26.201"
       x="270.57001"
       y="270.20001"
       transform="matrix(0.64886,0.7609,-0.7609,0.64886,0,0)"
       id="rect656"
       style="stroke-width:1pt" />
  </g>
</svg>

Error when generating NinePatch of width 1

Stretch and content of size 1

Caused by: java.lang.IllegalArgumentException: 0.0 incompatible with org.apache.batik.transcoder.keys.LengthKey@37adabfc
    at org.apache.batik.transcoder.TranscodingHints.put(TranscodingHints.java:92)
    at org.apache.batik.transcoder.TranscoderSupport.addTranscodingHint(TranscoderSupport.java:58)
    at fr.avianey.mojo.androidgendrawable.Gen.transcode(Gen.java:532)
    at fr.avianey.mojo.androidgendrawable.Gen.transcode(Gen.java:501)
    at fr.avianey.mojo.androidgendrawable.Gen.execute(Gen.java:371)

Convert SVG to WebP format.

It would be a great idea to add an option that could enable us to convert SVG into WebP format.

Is this possible technically ? If yes I could step up and try to implement it and send a PR.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.