欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java把截图上传至服务器 博客分类: Javajava swing 上传截图到服务器 

程序员文章站 2024-02-23 18:39:58
...

java 把上传截图到服务器

(1)从JTextArea或java swing的其他组件获取截图

 

 /***
	     * convert JTextArea to image
	     * @param ta
         * @param destFile : java.io.File or OutputStream
         * @param format
         * @param multiple : 分辨率倍数
         */
        public static BufferedImage generateImage(JComponent ta, Object destFile, String format, Integer specifiedHeight, Integer specifiedWidth, int multiple) {
            int height=ta.getHeight();
			int width=ta.getWidth();
	    	if(specifiedHeight!=null&&specifiedHeight!=SystemHWUtil.NEGATIVE_ONE){//如果指定了高度
	    		height=specifiedHeight;
	    	}
			if(specifiedWidth!=null&&specifiedWidth!=SystemHWUtil.NEGATIVE_ONE){//如果指定了高度
				width=specifiedWidth;
			}
            BufferedImage img = new BufferedImage(width * multiple, height * multiple, BufferedImage.TYPE_INT_RGB);
            Graphics2D g2d = img.createGraphics();
            g2d.scale(multiple, multiple);
            /*g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
	        g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
	        g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
	        Ellipse2D.Double e = new Ellipse2D.Double(300D - DOT_SIZE,
                    200D - DOT_SIZE, DOT_SIZE + DOT_SIZE, DOT_SIZE + DOT_SIZE);
	        g2d.setColor(Color.YELLOW);
	        g2d.fill(e);*/
	        ta.printAll(g2d);
	        g2d.dispose();
	        if(!ValueWidget.isNullOrEmpty(destFile)){
                if (destFile instanceof File) {//把截图保存到文件
                    File file = (File) destFile;
                    try {
                        ImageIO.write(img, format/*"jpg"*/, file);
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                } else if (destFile instanceof OutputStream) {
                    OutputStream outputStream = (OutputStream) destFile;
                    try {
                        ImageIO.write(img, format/*"jpg"*/, outputStream);
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
            }

	        return img;
		}

 

(2)把截图转化为字节数组

实际上是把BufferedImage转化为byte[]

    /**
     * 把BufferedImage 转化为字节数组
     *
     * @param img
     * @return
     */
    public static ByteArrayOutputStream imageToByteArrayOutputStream(BufferedImage img, String formatName) {
        //创建储存图片二进制流的输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        try {
            //创建ImageOutputStream流
            ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(baos);
            //将二进制数据写进ByteArrayOutputStream
            ImageIO.write(img, formatName, imageOutputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return baos;
    }

  

(3)使用HttpURLConnection发送http请求

    public static void uploadFile(String formatName, byte[] bytes, String uploadedFileName) {
        String size = FileUtils.formatSize(bytes.length);
        int resultOption = JOptionPane.showConfirmDialog(null, "Are you sure to Upload " + size + " to Server ?", "确认",
                JOptionPane.OK_CANCEL_OPTION);
        if (resultOption != JOptionPane.OK_OPTION) {
            ToastMessage.toast("取消上传", 2000, Color.red);
            return;
        }
        try {
            String result = HttpSocketUtil.uploadFile("http://blog.yhskyc.com/convention2/ajax_image/upload", bytes,
                    uploadedFileName + "." + formatName, (Map<String, String>) null);
            Map requestMap = null;
            try {
                requestMap = (Map) HWJacksonUtils.deSerialize(result, Map.class);
                StringBuffer stringBuffer = new StringBuffer("<html>");
                for (Object obj : requestMap.keySet()) {
                    Object val = requestMap.get(obj);
                    stringBuffer.append("<div style=\"padding-bottom:5px;margin-bottom: 5px;border: 1px solid #f38399;border-radius: 5px;\" >");
                    stringBuffer.append("<span style=\"color: #ddd;\" >").append(obj).append("</span>").append(":").append("<br />");
                    stringBuffer.append(val).append("</div>");
                }
                stringBuffer.append("</html>");
//                System.out.println(stringBuffer);
                ToastMessage.toast("上传成功", 2000);
                CustomDefaultDialog customDefaultDialog = new CustomDefaultDialog(stringBuffer.toString(), "图片路径", true, null, 800);
                customDefaultDialog.setVisible(true);
//                            ComponentUtil.appendResult(area2,result,true,false);

            } catch (JsonParseException e1) {
                e1.printStackTrace();
            } catch (JsonMappingException e1) {
                e1.printStackTrace();
            }

            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

 /***
     * 上传BufferedImage 到远程服务器
     * @param img
     */
    public static void uploadBufferedImage(BufferedImage img) {
        String formatName = "jpg";
        ByteArrayOutputStream baos = imageToByteArrayOutputStream(img, formatName);

        //输出数组
        byte[] bytes = baos.toByteArray();
        uploadFile(formatName, bytes, "Screenshots");
    }

 
java把截图上传至服务器
            
    
    博客分类: Javajava swing 上传截图到服务器 
 

  • java把截图上传至服务器
            
    
    博客分类: Javajava swing 上传截图到服务器 
  • 大小: 89 KB