首页 > 其他分享 >图篇增强优化

图篇增强优化

时间:2023-12-13 23:11:55浏览次数:21  
标签:增强 java String void private import new 优化 图篇

目前还存在一些小问题,还得改改

package com.example;

import okhttp3.*;
import org.json.JSONException;
import org.json.JSONObject;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;

public class tuxiang extends JFrame {
private static final long serialVersionUID = 1L;
public static final String API_KEY = "TggSZoWYfVLpaGbezMzf2opT";
public static final String SECRET_KEY = "eF9UfmITtR0EUDFkDMyHyCcbKGHe9j8Y";
static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
private JLabel imageLabel;
private JButton chooseButton;
private JButton processButton;

private String selectedImagePath;

public tuxiang() {
setTitle("Image Processing App");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

initializeComponents();
setLayout(new BorderLayout());

add(imageLabel, BorderLayout.CENTER);
add(chooseButton, BorderLayout.WEST);
add(processButton, BorderLayout.EAST);
}

private void initializeComponents() {
imageLabel = new JLabel();
chooseButton = new JButton("Choose Image");
processButton = new JButton("Process Image");

chooseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

chooseImage();
}
});
processButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

processImage();
}
});
}
//用来选择文件位置
private void chooseImage() {
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(this);

if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
selectedImagePath = selectedFile.getAbsolutePath();
displayImage(selectedImagePath);
}
}

private void displayImage(String imagePath) {
ImageIcon icon = new ImageIcon(imagePath);
Image image = icon.getImage().getScaledInstance(300, 300, Image.SCALE_SMOOTH);
imageLabel.setIcon(new ImageIcon(image));
}

private void processImage() {
if (selectedImagePath != null && !selectedImagePath.isEmpty()) {
try {
String base64Image = getFileContentAsBase64(selectedImagePath, true);
String processedImage = processImageWithBaiduAPI(base64Image);
System.out.println(processedImage);
displayImage(processedImage);
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Image processing failed: " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(this, "Please choose an image first.", "Error", JOptionPane.ERROR_MESSAGE);
}
}

static String getFileContentAsBase64(String path, boolean urlEncode) throws IOException {
byte[] b = Files.readAllBytes(Paths.get(path));
String base64 = Base64.getEncoder().encodeToString(b);
if (urlEncode) {
base64 = URLEncoder.encode(base64, "utf-8");
}
return base64;
}

private String processImageWithBaiduAPI(String base64Image) throws Exception {
String s1="image=";
String ss=s1+base64Image;
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, ss);
Request request = new Request.Builder()
.url("https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime?access_token=" + getAccessToken())
.method("POST", body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("Accept", "application/json")
.build();
Response response = HTTP_CLIENT.newCall(request).execute();
return (response.body().string());
// Assuming there's a "processed_image" field in the response
}
static String getAccessToken() throws IOException {
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY
+ "&client_secret=" + SECRET_KEY);
Request request = new Request.Builder()
.url("https://aip.baidubce.com/oauth/2.0/token")
.method("POST", body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.build();
Response response = HTTP_CLIENT.newCall(request).execute();
try {
return new JSONObject(response.body().string()).getString("access_token");
} catch (JSONException e) {
throw new RuntimeException(e);
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new tuxiang().setVisible(true);
}
});
}
}

标签:增强,java,String,void,private,import,new,优化,图篇
From: https://www.cnblogs.com/mine-my/p/17900153.html

相关文章

  • 嵌入式代码优化技巧
    内存管理技巧1.C/C++工程应尽量避免深拷贝,尽量用浅拷贝(指针或者引用),如果指针需要频繁拷贝,用智能指针是一种不错的选择2.启用内存池管理线程的内存开销,事先在堆里边分配好,然后快速使用避免复杂的浮点运算1.复杂的浮点运算尽量避免,有些芯片是不支持硬件双精度浮点数的,比如全志T3,......
  • 嵌入式图像处理:算法、应用与性能优化
    嵌入式系统在现代科技中扮演着重要的角色,广泛应用于医疗设备、汽车、工业控制、智能家居等领域。嵌入式图像处理作为其中的一个关键组成部分,为许多应用提供了视觉感知能力。本文将介绍嵌入式图像处理的算法、应用以及性能优化方法,并提供相关的代码示例。嵌入式图像处理算法图像采集......
  • FQS:一种神奇的数仓查询优化技术
    本文分享自华为云社区《根据执行计划优化SQL【绽放吧!GaussDB(DWS)云原生数仓】》,作者:西岭雪山。引言如果您刚接触DWS那一定会好奇想要知道"REMOTE_FQS_QUERY"到底代表什么意思?我们看官网的描述是代表这执行计划已经CN直接将原语句下发到DN,各DN单独执行,并将执行结果在CN上进行汇......
  • Netty04-优化与源码
    优化与源码分析1.优化1.1扩展序列化算法序列化,反序列化主要用在消息正文的转换上序列化时,需要将Java对象变为要传输的数据(可以是byte[],或json等,最终都需要变成byte[])反序列化时,需要将传入的正文数据还原成Java对象,便于处理目前的代码仅支持Java自带的序列化,反......
  • SQL语句性能优化策略(转)
    本文会提到52条SQL语句性能优化策略。1、对查询进行优化,应尽量避免全表扫描,首先应考虑在WHERE及ORDERBY涉及的列上建立索引。2、应尽量避免在WHERE子句中对字段进行NULL值判断,创建表时NULL是默认值,但大多数时候应该使用NOTNULL,或者使用一个特殊的值,如0,-1作为......
  • 【AI图像与视频质量软件】上海道宁与Topaz Labs为您带来强大的图像和视频增强工具,帮助
    ​在这个网络越来越发达的时代我们的生活总是离不开各类长短视频网站和app无论是个人还是企业团队都需要通过发布照片和视频来展示和介绍自己但受限于设备、环境、时代等因素我们的作品往往存在着很多问题如画质模糊、色彩平淡、缺乏细节等等TopazLabs是一款强大......
  • 前端体验优化(2)——基建
    在2020年刚加入公司的时候,我就确定要持续推进基建的建设,经过这几年的沉淀,完成了从0到1的跨越。基建的目的是解决各类技术或业务问题,沉淀通用技术能力,提升工作效率,降低开发成本,直接或间接助力业务开展。接下来会围绕项目重构、组件化、标准化、工具化、自动化......
  • RTL级电路优化
    RTL常用逻辑写法判断两数之差等于1assignbma_eq_1=(b[11:0]-a[11:0]==1'b1)与下面的逻辑等效:assignbma_eq_1=&(({b[10:0]|~a[10:0],1'b0})^(b[11:0]^a[11:0]))加1减1写法assigna_p1[4:0]=a[4:0]+1'b1与下面的逻辑等效:assigna_p1[0]=~a[0];assig......
  • SAP ABAP 显式增强技术之 New BAdI 的实战介绍 - 如何创建和激活增强实现试读版
    本教程之前的文章,对SAPABAP各种增强技术做了一个概述:122.SAPABAP各种增强技术(Enhancement)概述-所谓第一代,第二代,第三代增强技术的出处是?然后第62篇文章,针对下图红色区域的基于EnhancementFramework增强技术中的隐式增强之ABAP报表增强,做了详细介绍:62.如何通过增......
  • SAP ABAP 显式增强技术之 New BAdI 的技术原理介绍试读版
    本教程之前的文章,对SAPABAP各种增强技术做了一个概述:122.SAPABAP各种增强技术(Enhancement)概述-所谓第一代,第二代,第三代增强技术的出处是?然后第62篇文章,针对下图红色区域的基于EnhancementFramework增强技术中的隐式增强之ABAP报表增强,做了详细介绍:62.如何通过增......