2023-12-16

发布时间 2023-12-16 21:35:40作者: 超爱彬宝同学
package ShiYong;

import Util.Base64Util;
import Util.FileUtil;
import Util.HttpUtil;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.Base64;

public class AnimationPictures extends JFrame{
static String url="F:\\虚拟桌面\\ji.png";
public static void main(String[] args) {

// String result=selfie_anime(url);
// System.out.println(result);
JFrame frame = new JFrame("翻译");
// 设置窗口的大小和位置
frame.setBounds(100, 100, 900, 600);
// 设置窗口关闭时的行为
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建一个面板 JPanel,并设置 BoxLayout 布局管理器
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JLabel introduce=new JLabel("请选择图片");
panel.add(introduce);
JButton ChooseBtn=new JButton("选择");
panel.add(ChooseBtn);
JButton ChooseBtn2=new JButton("转换");
panel.add(ChooseBtn2);
System.out.println(url);
JLabel imageLabel = new JLabel();
imageLabel.setHorizontalAlignment(JLabel.CENTER);
imageLabel.setVerticalAlignment(JLabel.CENTER);
imageLabel.setPreferredSize(new Dimension(200, 200)); // 设置图片大小
panel.add(imageLabel);
JLabel imageLabel2 = new JLabel();
imageLabel2.setHorizontalAlignment(JLabel.CENTER);
imageLabel2.setVerticalAlignment(JLabel.CENTER);
imageLabel2.setPreferredSize(new Dimension(200, 200));
panel.add(imageLabel2);
// 将面板添加到窗口中
frame.getContentPane().add(panel);
// 显示窗口
frame.setVisible(true);
ChooseBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
int option = fileChooser.showOpenDialog(ChooseBtn);
if (option == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
url = selectedFile.getAbsolutePath();
ImageIcon icon = new ImageIcon(url);
Image img = icon.getImage();
Image newImg = img.getScaledInstance(200, 200, java.awt.Image.SCALE_SMOOTH);
ImageIcon scaledIcon = new ImageIcon(newImg);
imageLabel.setIcon(scaledIcon);
// imageLabel.setIcon(icon);
// JOptionPane.showMessageDialog(ChooseBtn, "Selected file: " + filePath);
} else {
JOptionPane.showMessageDialog(ChooseBtn, "File selection cancelled.");
}
}
});
ChooseBtn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String res=selfie_anime2(url);
Gson gson = new Gson();
JsonData jsonData = gson.fromJson(res, JsonData.class);

String imageBase64 = jsonData.getImage();
ImageIcon icon = base64ToImageIcon(imageBase64);
Image img = icon.getImage();
Image newImg = img.getScaledInstance(600, 600, java.awt.Image.SCALE_SMOOTH);
ImageIcon scaledIcon = new ImageIcon(newImg);
imageLabel2.setIcon(scaledIcon);
// imageLabel2.setIcon(icon);
}
});
}
public static ImageIcon base64ToImageIcon(String base64) {
byte[] bytes = Base64.getDecoder().decode(base64);
return new ImageIcon(bytes);
}
public static String selfie_anime(String filePath) {
// 请求url
String url = "https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime";
try {
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, "UTF-8");

String param = "image=" + imgParam;

// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
String accessToken = "24.916b7738d60f5009d6229f63e7585f03.2592000.1703827944.282335-43962765";

String result = HttpUtil.post(url, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String selfie_anime2(String filePath) {
// 请求url
String url = "https://aip.baidubce.com/rest/2.0/image-process/v1/contrast_enhance";
try {
byte[] imgData = FileUtil.readFileByBytes(filePath);
String imgStr = Base64Util.encode(imgData);
String imgParam = URLEncoder.encode(imgStr, "UTF-8");

String param = "image=" + imgParam;

// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
String accessToken = "24.916b7738d60f5009d6229f63e7585f03.2592000.1703827944.282335-43962765";

String result = HttpUtil.post(url, accessToken, param);
System.out.println(result);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private static class JsonData {
private long log_id;
private String image;

public String getImage() {
return image;
}
}
}