Градиент от SVG до PNG не применяется - PullRequest
1 голос
/ 09 мая 2019

У меня был один SVG файл, я изменил его, чтобы он имел градиент.

Затем я конвертирую SVG в png, но изменение градиента отсутствует в новом png.

Я пытался преобразовать SVG в png с помощью интернет-конвертера, но он все еще не проходит градиент.

Когда я открываю файл svg в Illustrator, я не вижу градиент.Когда отображается предварительный просмотр файла SVG, я вижу градиент.

Я получаю это error: org.apache.batik.bridge.BridgeException The attribute d of the element <path> is invalid.

Мой вопрос:

Если кто-то сталкивался спохожая ошибка или есть идея о том, как это исправить, не могли бы вы дать мне несколько советов?

Вот мой конвертер:

public void svgToPng() throws MalformedURLException {

    String svg= "/Users/userName/svg/";
    File folder = new File(svg);

    for (File fileEntry : folder.listFiles()) {

        String[] codigoAux = fileEntry.getName().split("\\.");

        if (codigoAux[0].isEmpty()) {

            LOGGER.debug("Name of file is empty");

        } else {
            try {

                PNGTranscoder transcoder = new PNGTranscoder();

                String svgURI = fileEntry.toURI().toURL().toString();
                TranscoderInput input = new TranscoderInput(svgURI);

                String outputPath = "/Users/userName/png/";

                OutputStream ostream = new FileOutputStream(outputPath + codigoAux[0] + ".png");
                TranscoderOutput output = new TranscoderOutput(ostream);

                transcoder.transcode(input, output);

                ostream.flush();
                ostream.close();


            }catch (TranscoderException ex) {

                LOGGER.error(ex);

            } catch (IOException ex) {

                LOGGER.error(ex);

            }

        }


    }

}

Вот мой путь к элементу в моем SVG:

<path fill="#D1E9FD" d="M7095.36-13.684c800.463,818.206,1299.013,1969.505,1299.013,3244.739             c0,633.732-123.293,1236.744-345.429,1783.602H305.852C83.733,4467.799-39.558,3864.79-39.558,3231.055             c0-1275.234,498.537-2426.534,1299.021-3244.739H7095.36z"></path>

Вот мой градиент в моем SVG:

<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">        
    <stop offset="0%" style="stop-color:#FFFFFF;stop-opacity:1"></stop>        
    <stop offset="100%" style="stop-color:#FFE69C;stop-opacity:1"></stop>    
</linearGradient>

И вот где я делаю ссылку на градиент:

<style>        #Countries path, #Countries polygon {        
fill: url(#grad1);        filter: url(#dropshadow);        }    
</style>  

Я ожидаю, что на выходе будет изображение PNG с градиентом, который у меня есть в предварительном просмотре моего SVG-файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...