Java Image prepareImagePath(String html, URL url)

Here you can find the source of prepareImagePath(String html, URL url)

Description

prepare Image Path

License

Open Source License

Declaration

private static String prepareImagePath(String html, URL url) 

Method Source Code

//package com.java2s;
/*******************************************************************************
 * Copyright (c) 2016 Pablo Pavon-Marino.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/lgpl.html
 *
 * Contributors:/*w  ww .  ja v a2  s.  c  om*/
 *     Pablo Pavon-Marino - Jose-Luis Izquierdo-Zaragoza, up to version 0.3.1
 *     Pablo Pavon-Marino - from version 0.4.0 onwards
 ******************************************************************************/

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.parser.ParserDelegator;

import java.io.*;

import java.net.URL;

import java.util.Set;
import java.util.TreeSet;

public class Main {
    private static String prepareImagePath(String html, URL url) {
        final Set<String> list = new TreeSet<String>();
        final ParserDelegator parserDelegator = new ParserDelegator();
        final HTMLEditorKit.ParserCallback parserCallback = new HTMLEditorKit.ParserCallback() {
            @Override
            public void handleText(final char[] data, final int pos) {
            }

            @Override
            public void handleStartTag(HTML.Tag tag, MutableAttributeSet attribute, int pos) {
                if (tag == HTML.Tag.IMG) {
                    String address = (String) attribute.getAttribute(HTML.Attribute.SRC);
                    list.add(address);
                }
            }

            @Override
            public void handleEndTag(HTML.Tag t, final int pos) {
            }

            @Override
            public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, final int pos) {
                if (t == HTML.Tag.IMG) {
                    String address = (String) a.getAttribute(HTML.Attribute.SRC);
                    list.add(address);
                }
            }

            @Override
            public void handleComment(final char[] data, final int pos) {
            }

            @Override
            public void handleError(final String errMsg, final int pos) {
            }
        };

        final Reader reader = new StringReader(html);
        try {
            parserDelegator.parse(reader, parserCallback, true);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        for (String item : list) {
            try {
                URL newURL = new URL(url, item);
                html = html.replace(item, newURL.toExternalForm());
            } catch (Throwable e) {
                throw new RuntimeException(e);
            }
        }

        return html;
    }
}

Related

  1. makeColorTransparent(Image im, Color c)
  2. mask(Image img, Color color)
  3. openImage()
  4. openImageFileChooser(Component com)
  5. paintToImage(Component comp)
  6. removeImage(JLabel image)
  7. removeRedeye(Image im, final int x1, final int y1, final int x2, final int y2)
  8. renderComponentToImage(JComponent component)
  9. save(Image image, File file, String formatName)