You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.9 KiB
92 lines
2.9 KiB
package com.fr.base.svg; |
|
|
|
import com.fr.general.IOUtils; |
|
import org.apache.batik.transcoder.TranscoderException; |
|
import org.apache.batik.transcoder.TranscoderInput; |
|
import org.apache.xmlgraphics.java2d.Dimension2DDouble; |
|
import org.jetbrains.annotations.NotNull; |
|
import org.jetbrains.annotations.Nullable; |
|
|
|
import java.awt.Image; |
|
import java.io.IOException; |
|
import java.net.URL; |
|
|
|
/** |
|
* SVG图标加载器 |
|
* @author Yvan |
|
* @version 10.0 |
|
* Created by Yvan on 2020/12/17 |
|
*/ |
|
public class SVGLoader { |
|
public static final int ICON_DEFAULT_SIZE = 16; |
|
|
|
public SVGLoader() { |
|
} |
|
|
|
@Nullable |
|
public static Image load(@NotNull String url) { |
|
try { |
|
URL resource = IOUtils.getResource(url, SVGLoader.class); |
|
if (resource == null) { |
|
return null; |
|
} |
|
return load(resource, SVGIcon.SYSTEM_SCALE); |
|
} catch (IOException ignore) { |
|
return null; |
|
} |
|
} |
|
|
|
@Nullable |
|
public static Image load(@NotNull URL url) throws IOException { |
|
return load(url, SVGIcon.SYSTEM_SCALE); |
|
} |
|
|
|
@Nullable |
|
public static Image load(@NotNull URL url, double scale) throws IOException { |
|
try { |
|
String svgUri = url.toString(); |
|
TranscoderInput input = new TranscoderInput(svgUri); |
|
return SVGTranscoder.createImage(scale, input).getImage(); |
|
} catch (TranscoderException ignore) { |
|
return null; |
|
} |
|
} |
|
|
|
@Nullable |
|
public static Image load(@NotNull URL url, double scale, Dimension2DDouble dimension) throws IOException { |
|
try { |
|
String svgUri = url.toString(); |
|
TranscoderInput input = new TranscoderInput(svgUri); |
|
return SVGTranscoder.createImage(scale, input, |
|
(float) (dimension.getWidth() * scale), (float) (dimension.getHeight() * scale)).getImage(); |
|
} catch (TranscoderException ignore) { |
|
return null; |
|
} |
|
} |
|
|
|
|
|
@Nullable |
|
public static Image load(@NotNull URL url, double scale, double overriddenWidth, double overriddenHeight) throws IOException { |
|
try { |
|
String svgUri = url.toString(); |
|
TranscoderInput input = new TranscoderInput(svgUri); |
|
return SVGTranscoder.createImage(scale, input, (float) (overriddenWidth * scale), (float) (overriddenHeight * scale)).getImage(); |
|
} catch (TranscoderException ignore) { |
|
return null; |
|
} |
|
} |
|
|
|
@Nullable |
|
public static Image load(@NotNull String url, float width, float height) { |
|
try { |
|
URL resource = IOUtils.getResource(url, SVGLoader.class); |
|
if (resource == null) { |
|
return null; |
|
} |
|
TranscoderInput input = new TranscoderInput(resource.toString()); |
|
return SVGTranscoder.createImage(SVGIcon.SYSTEM_SCALE, input, -1, -1, width, height).getImage(); |
|
} catch (TranscoderException ignore) { |
|
return null; |
|
} |
|
} |
|
}
|
|
|