QieTuClass.java 4.29 KB
package com.sincere.haikangface;

import com.sincere.haikangface.mqtt.MqtUtils;
import com.sincere.haikangface.utils.ApiUtil;
import com.sun.imageio.plugins.common.ImageUtil;
import org.json.JSONArray;

import javax.swing.*;
import java.awt.*;
import java.awt.image.CropImageFilter;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageFilter;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class QieTuClass extends JFrame {


    public static void main(String[] args) {
        String imgName = "43539917634D4EED364DEC87D8DEC2462020-09-01.jpg";
        String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        if (imgName.contains(date)) {
            String imgId = imgName.substring(0, imgName.indexOf(date));
            System.out.println("imgId:"+imgId);
        }

//        new QieTuClass();

    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        try {
            // 加载所有图像
            mediaTracker.waitForAll();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        if (mediaTracker.checkAll()) { // 所有图像加载完毕
            // 循环将每张分割的图像绘制到窗体中
            for (int row = 0, len = images.length; row < len; row++) {
                for (int col = 0, length = images[row].length; col < length; col++) {
                    Image img = images[row][col];
                    int imgWidth = img.getWidth(null);
                    int imgHeight = img.getHeight(null);
                    int x = col * (imgWidth + 10) + 15;
                    int y = row * (imgHeight + 15) + 40;
                    g.drawImage(img, x, y, null);
                }
            }
        }
    }

    private static final long serialVersionUID = 1140239462766935667L;
    private MediaTracker mediaTracker;
    private Image[][] images;

    public QieTuClass() {
        setSize(800, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        // 创建媒体追踪器对象
        mediaTracker = new MediaTracker(this);
        // 获取源图像
        Image image = Toolkit.getDefaultToolkit().getImage("C:\\Users\\taohandong\\Desktop\\归档\\TIM图片20191105093448.jpg");
        // 分割图像
        images = cutImage(image, 1, 14, 0, 3, 128, 95, 128, 95, this);
        int index = 0;
        // 将所有分割得到的图像添加到MediaTracker追踪列表中
        for (Image[] images2 : images) {
            for (Image image2 : images2) {
                mediaTracker.addImage(image2, index++);
            }
        }

        setVisible(true);
    }


    /**
     * 分割图像
     *
     * @param image     传入的图片对象
     * @param rows      垂直方向上需要裁剪出的图片数量 - 行
     * @param cols      水平方向上需要裁剪出的图片数量 - 列
     * @param x         开始裁剪位置的X坐标
     * @param y         开始裁剪位置的Y坐标
     * @param width     每次裁剪的图片宽度
     * @param height    每次裁剪的图片高度
     * @param changeX   每次需要改变的X坐标数量
     * @param changeY   每次需要改变的Y坐标数量
     * @param component 容器对象,目的是用来创建裁剪后的每个图片对象
     * @return 裁剪完并加载到内存后的二维图片数组
     */
    public static Image[][] cutImage(Image image, int rows, int cols, int x,
                                     int y, int width, int height, int changeX, int changeY,
                                     Component component) {
        try {
            JSONArray jsonArray = ApiUtil.getInstance().youDaoAPi(new File("C:\\Users\\taohandong\\Desktop\\归档\\TIM图片20191105093448.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        Image[][] images = new Image[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                ImageFilter filter = new CropImageFilter(x + j * changeX, y + i
                        * changeY, width, height);
                images[i][j] = component.createImage(new FilteredImageSource(
                        image.getSource(), filter));
            }
        }

        return images;
    }
}