我可以在 ImageView 中添加 SVG 图像吗?
Can i add SVG image in ImageView?
我有一个 imageView:width=200 ,height=150
,当我上传大图像 (.jpg) 例如图像:1200*500 像素并且我减去 imageView 的宽度和高度时,图像失去了质量,不清楚,我能找到一种在 imageView 中添加 .svg 或矢量图像的方法吗?
我通过使用来自 apache 的 Transcoder API of batik library project 找到了一个选项,并将生成的 BufferedImage 转换为 JavaFX 图像。
编辑:
代码转换器 API 提供 类 将 SVG 文档转换为 PNG、JPG、TIFF,我们可以使用此代码示例从 SVG 路径创建 JPEG 图像,
import java.io.*;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
public class SaveAsJPEG {
public static void main(String[] args) throws Exception {
// Create a JPEG transcoder
JPEGTranscoder t = new JPEGTranscoder();
// Set the transcoding hints.
t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY,
new Float(.8));
// Create the transcoder input.
String svgURI = new File("C:\Users\Blue\Downloads\icon8_smile.svg").toURL().toString();
TranscoderInput input = new TranscoderInput(svgURI);
// Create the transcoder output.
OutputStream ostream = new FileOutputStream("icon8_smile.jpg");
TranscoderOutput output = new TranscoderOutput(ostream);
// Save the image.
t.transcode(input, output);
// Flush and close the stream.
ostream.flush();
ostream.close();
System.exit(0);
}
}
通过这种方式,我们可以将 SVG 矢量图像转换为基于像素的其他图像。
我们可以将其他选项添加到我们的代码中,以帮助我们定义输出图像的大小:
t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(250));
这行代码帮助我们根据 ImageView 的大小定义图像的大小,我们可以像这样进行一些更改:
t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, imageView.getFitWidth();
我有一个 imageView:width=200 ,height=150
,当我上传大图像 (.jpg) 例如图像:1200*500 像素并且我减去 imageView 的宽度和高度时,图像失去了质量,不清楚,我能找到一种在 imageView 中添加 .svg 或矢量图像的方法吗?
我通过使用来自 apache 的 Transcoder API of batik library project 找到了一个选项,并将生成的 BufferedImage 转换为 JavaFX 图像。
编辑:
代码转换器 API 提供 类 将 SVG 文档转换为 PNG、JPG、TIFF,我们可以使用此代码示例从 SVG 路径创建 JPEG 图像,
import java.io.*;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
public class SaveAsJPEG {
public static void main(String[] args) throws Exception {
// Create a JPEG transcoder
JPEGTranscoder t = new JPEGTranscoder();
// Set the transcoding hints.
t.addTranscodingHint(JPEGTranscoder.KEY_QUALITY,
new Float(.8));
// Create the transcoder input.
String svgURI = new File("C:\Users\Blue\Downloads\icon8_smile.svg").toURL().toString();
TranscoderInput input = new TranscoderInput(svgURI);
// Create the transcoder output.
OutputStream ostream = new FileOutputStream("icon8_smile.jpg");
TranscoderOutput output = new TranscoderOutput(ostream);
// Save the image.
t.transcode(input, output);
// Flush and close the stream.
ostream.flush();
ostream.close();
System.exit(0);
}
}
通过这种方式,我们可以将 SVG 矢量图像转换为基于像素的其他图像。 我们可以将其他选项添加到我们的代码中,以帮助我们定义输出图像的大小:
t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, new Float(250));
这行代码帮助我们根据 ImageView 的大小定义图像的大小,我们可以像这样进行一些更改:
t.addTranscodingHint(JPEGTranscoder.KEY_WIDTH, imageView.getFitWidth();