java 粘贴图片

简介: <div class="markdown_views"><p>java swing 程序中如何获取剪切板中的图片呢? <br>下面是我做的一个java swing 图形界面: <br><img src="http://img.blog.csdn.net/20150628165650648" alt="生成二维码" title=""></p><p>右键,出现菜单,点击菜单

java swing 程序中如何获取剪切板中的图片呢?
下面是我做的一个java swing 图形界面:
生成二维码

右键,出现菜单,点击菜单中的”paste image”就会获取剪切板中的图片

/***
     * 把系统剪切板中的图片黏贴到swing的Label控件中
     */
    public void pasteClipboardImageAction(){
        BufferedImage bufferedimage=ComponentUtil.getClipboardImage(this.frame);

        if(ValueWidget.isNullOrEmpty(bufferedimage)){
            GUIUtil23.alert("系统剪切板中无图片,请先复制图片");
            return;
        }
        image=bufferedimage;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {//把粘贴过来的图片转为为二进制(字节数组)
            ImageIO.write(bufferedimage, read_qrcode_from_pic_format/*jpg*/, baos);
            QRbytes= baos.toByteArray();
            ComponentUtil.appendResult(resultArea, "粘贴的二维码大小:\t"+QRbytes.length, true);
        } catch (IOException e) {
            e.printStackTrace();
        }

        qrResultLabel.setIcon(new ImageIcon(image));
    }

核心方法:解析剪切板中的内容

public static BufferedImage getClipboardImage(Frame frame) {
        // java.lang.ClassCastException: sun.awt.datatransfer.TransferableProxy cannot be cast to sun.awt.datatransfer.ClipboardTransferable
        Transferable trans=frame.getToolkit().getSystemClipboard().getContents(null);
        BufferedImage image=null;
//      if(trans instanceof ClipboardTransferable){
//      ClipboardTransferable clipboardTrans =(ClipboardTransferable)trans;

        try {
            if (null != trans && trans.isDataFlavorSupported(DataFlavor.imageFlavor)) {   
            Object obj22=trans.getTransferData(DataFlavor.imageFlavor);
            if(!ValueWidget.isNullOrEmpty(obj22)){
                if(obj22 instanceof BufferedImage){
                image=(BufferedImage)obj22;
                }
            }
            }
        } catch (UnsupportedFlavorException e1) {
            e1.printStackTrace();
            GUIUtil23.errorDialog(e1);
        } catch (IOException e1) {
            e1.printStackTrace();
            GUIUtil23.errorDialog(e1);
        }

        return image;
    }

作者: 黄威
博客地址:
CSDN博客主页
itEye博客主页

相关文章
|
3月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
106 4
|
3月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
76 2
|
3月前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
62 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
7月前
|
数据可视化 Java
Java语言使用DL4J实现图片分类
【6月更文挑战第14天】Java语言使用DL4J实现图片分类
128 3
|
3月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
220 1
|
3月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
33 1
|
3月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
134 1
|
3月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
165 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
4月前
|
Java
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
这篇文章介绍了Java中FileInputStream和FileOutputStream的使用,包括如何读取和写入txt文件以及如何拷贝图片文件。
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
|
4月前
|
存储 缓存 监控
Java——图片文件位于 bin 目录下,下载新图片会导致应用程序重启
【9月更文挑战第22天】在Java应用中,若图片位于bin目录下且下载新图片导致应用重启,可能是因为部署方式不当或资源监控机制过于敏感。解决方法包括:更改图片存储位置至独立目录;配置应用服务器减少资源监控敏感度;使用独立资源服务器托管静态资源;优化代码减少资源重复加载。具体方案需根据应用实际情况和技术栈调整。