Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将base64图像导入JTextPane_Java_Image_Base64_Jtextpane - Fatal编程技术网

Java 将base64图像导入JTextPane

Java 将base64图像导入JTextPane,java,image,base64,jtextpane,Java,Image,Base64,Jtextpane,是否可以在JTextPane中显示base64加密图像 这是我的密码 JTextPane jTextPane = new JTextPane(); javax.swing.text.html.HTMLEditorKit eKit = new javax.swing.text.html.HTMLEditorKit(); jTextPane.setEditorKit(eKit); jTextPane.setContentType("text/html"); // my base64 image

是否可以在JTextPane中显示base64加密图像

这是我的密码

JTextPane jTextPane = new JTextPane();

javax.swing.text.html.HTMLEditorKit eKit = new javax.swing.text.html.HTMLEditorKit();
jTextPane.setEditorKit(eKit);

jTextPane.setContentType("text/html");

// my base64 image, used then in the img tag in the html...
String img64="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAwAAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFzByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSpa/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJlZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uisF81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PHhhx4dbgYKAAA7";

jTextPane.setText(html);

您需要做的是将Base64编码的图像解析为一个字节数组,然后使用ByteArrayIn加载图像,使用该字节数组加载putStream

例如,对于解码Base64,您可以使用我发现的

解决办法是 通过覆盖
类javax.swing.text.html.HTMLEditorKit中的getViewFactory 然后在ImageViewclass.java中重写loadImage方法
支持base64编码的图像

最后,我还找到了必须重写“loadimage”方法的地方。我应该添加[src=“foo”]的条件流来加载图像,这只是图像的链接或图像数据本身。现在,我要写的就是“JTextPane.setEditorKit(新的MyExtendedHtmlEditorKit());”

然而,我的问题就在这里。该方法存在“ImageViewer.class create()[HtmlFactory.class(静态内部类)[HtmlEditorKit.class]]>void loadImage()[ImageViewer.class]”
这是深层嵌套的,这些类有许多从类外部看不见的对象和许多静态定义。所以,这意味着我必须从树根上建立一棵完整的树,只需在树枝顶部摘一片叶子。我不能直接编辑Java VM运行时,编译和分发它。我认为这是不可能的,至少对我来说是肯定的

@Nicolas:我重新格式化了你的问题,你能检查一下图像源是否正确吗?//好的,谢谢你我使用了这个:公共静态字节[]解码(字符串str){byte[]bt=null;尝试{sun.misc.BASE64Decoder decoder=new sun.misc.BASE64Decoder();bt=decoder.decodeBuffer(str);}catch(IOE异常){e.printStackTrace();}返回bt;}//然后是byte[]parseImg=f.decode(texte);ImageIcon image=新的ImageIcon(解析img,“asd”);jTextPane.insertIcon(图像);//但这并没有破坏形象。你能帮我吗?好吧,没有更多的信息,你就很难得到帮助。无论如何,因为没有例外显示,我想Base64解码器工作得很好。因此,问题来自图像图标的创建。根据ImageIcon构造器文档,iamge应该“包含支持的图像格式,如GIF、JPEG或(从1.3开始)PNG”,这是您的情况吗?