首页 > 其他分享 >12.16每日总结

12.16每日总结

时间:2023-12-16 20:22:16浏览次数:31  
标签:总结 java String 每日 public 12.16 import new image

首先还是展示架构

image用来存储图片,api请求token,changecode用来存放图片转base64的代码(base64->changecode),ui放界面,mian用于启动!!,其余是百度图像的专用工具,你们申请然后使用人家的接口时就能看到

image文件夹存储图片,里边的不叫image的是基础图片,他们经过转换都叫image。

 

然后是引入依赖

复制代码
        <!--处理json-->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
        </dependency>

        <!--处理base64-->
        <dependency>
            <groupId>org.apache.directory.studio</groupId>
            <artifactId>org.apache.commons.codec</artifactId>
            <version>1.8</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.8</version> <!-- 或者使用最新版本 -->
        </dependency>

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.1.1</version>
        </dependency>
复制代码

API(获取token)

复制代码
package api;

import com.google.gson.Gson;
import okhttp3.*;


import java.io.IOException;

public class Api {
    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
    Token token=new Token();

    public String Post(String base64) throws IOException {
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
        // image 可以通过 getFileContentAsBase64("C:\fakepath\报名照片.jpg") 方法获取,如果Content-Type是application/x-www-form-urlencoded时,第二个参数传true
        RequestBody body = RequestBody.create(mediaType, "type=anime&image="+base64);
        System.out.println("格式:"+base64);
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/rest/2.0/image-process/v1/selfie_anime?access_token=" + token.getAuth())
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .addHeader("Accept", "application/json")
                .build();
        Response response = HTTP_CLIENT.newCall(request).execute();

        Gson gson = new Gson();
        String jsonResponse = response.body().string();
        Get_api yourObject = gson.fromJson(jsonResponse, Get_api.class);
        System.out.println(jsonResponse);
        return yourObject.image;
    }
}

class Get_api{
    String image;
    String log_id;
    Get_api(){}
}
复制代码

imageToBase64.java

复制代码
package changeCode;

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;

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

    public static void base64ToImage(String base64Image) {
        // 解码Base64字符串并保存为图像文件
        try {
            byte[] imageBytes = org.apache.commons.codec.binary.Base64.decodeBase64(base64Image);

            // 保存图像到文件
            String imagePath = "src/main/image/image.jpg"; // 替换成实际的保存路径和文件名
            Path path = Paths.get(imagePath);
            Files.write(path, imageBytes);

            System.out.println("Image saved successfully at: " + imagePath);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
复制代码

Main.java

复制代码
package ui;

import api.Api;
import changeCode.Image_Base64;

import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

public class Main {
    float proportion;
    JLabel lb;
    public void display(){
        Font font = new Font("仿宋", Font.PLAIN, 25);

        JFrame jf =new JFrame();
        JPanel Jp = new JPanel();//申请容器
        jf.setLayout(null);
        jf.setSize(560, 400);//设置窗体大小
        jf.setLocationRelativeTo(null);//设置窗体于屏幕中央位置
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//点击叉叉可以关闭窗体
        jf.setVisible(true);//组件可见
        Jp.setLayout(null);
        jf.setResizable(false);//窗体不可变大或者变小
        jf.setContentPane(Jp);//不知道

        JLabel jLabel=new JLabel("图片修改器:");
        jLabel.setVisible(true);
        jLabel.setFont(font);
        jLabel.setBounds(5,5,160,40);
        Jp.add(jLabel);

        JButton jButton=new JButton("选择图片");
        jButton.setFont(new Font("仿宋", Font.PLAIN, 20));
        jButton.setVisible(true);
        jButton.setBounds(350,8,120,30);
        Jp.add(jButton);
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser jFileChooser=new JFileChooser(new File("src/main/image"));
                jFileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                jFileChooser.showOpenDialog(null);
                jFileChooser.addChoosableFileFilter(new FileFilter() {
                    @Override
                    public boolean accept(File f) {
                        if(f.getName().toLowerCase().endsWith(".jpg")) {
                            return true;
                        }
                        else if(f.getName().toLowerCase().endsWith(".png")) {
                            return true;
                        }
                        return false;
                    }

                    @Override
                    public String getDescription() {
                        return null;
                    }
                });
                File chooseImage = jFileChooser.getSelectedFile();
                System.out.println("src/main/image/"+chooseImage.getName());
                if( chooseImage == null){
                    JOptionPane.showMessageDialog(null,"您已取消选择");
                }
                else{
                    JOptionPane.showMessageDialog(null,"选择成功,请耐心等待");
                    Image_Base64 imageBase64=new Image_Base64();
                    try {
                        String temp = imageBase64.imageToBase64("src/main/image/"+chooseImage.getName(),true);
                        Api api=new Api();
                        imageBase64.base64ToImage(api.Post(temp));

                        ImageIcon last = refresh();
                        lb.setIcon(last);
                        lb.setBounds((545 - (int)(300/proportion))/2, 60, last.getIconWidth(),last.getIconHeight());//设置图像的位置和大小

                        File file=new File("src/main/image/image.jpg");
                    } catch (IOException ioException) {
                        ioException.printStackTrace();
                    }
                }
            }
        });

        lb=new JLabel();//创建一个标签对象
        //引入
        ImageIcon last = refresh();
        lb.setIcon(last);
        lb.setBounds((545 - (int)(300/proportion))/2, 60, last.getIconWidth(),last.getIconHeight());//设置图像的位置和大小
        //要想图片整张显示填满窗体的话就要把图片的宽高改成和窗体大小一样
        lb.setVisible(true);
        Jp.add(lb);
    }
    ImageIcon refresh(){
        ImageIcon icon=new ImageIcon("src/main/image/image.jpg");//创建背景图片
        //缩放
        proportion= (float) icon.getIconHeight()/ (float) icon.getIconWidth();
        Image newImage = icon.getImage().getScaledInstance((int) (300/proportion), 300, Image.SCALE_DEFAULT);
        ImageIcon last=new ImageIcon(newImage);
        return last;
    }
}
复制代码

mian.java

复制代码
import api.Api;
import api.Token;
import changeCode.Image_Base64;
import ui.Main;

import java.io.IOException;

public class mian {
    public static void main(String[] args) throws IOException {
        //Token t = new Token();
        //System.out.println(t.getAuth());

        Main m  = new Main();
        m.display();


    }
}

标签:总结,java,String,每日,public,12.16,import,new,image
From: https://www.cnblogs.com/2351920019xin/p/17908313.html

相关文章

  • git命令总结
    本地命令作用注意git-v查看git版本 gitinit初始化git仓库 gitadd文件标识暂存某个文件文件标识以终端为起始的相对路径例:gitaddpage/login/index.htmlgitadd.暂存所有文件 gitcommit-m'说明注释'......
  • 计算机网络各层次协议盘点总结
    数据链路层(帧)1、停止-等待协议:每发送一个帧,就停止并等待,直到收到接收方发送的ACK确认为止。可以看作是接收窗口=发送窗口=12、后退N帧协议:维持滑动窗口,且接收窗口为1,发送窗口<=。接收方只按顺序接收帧,不按序无情丢弃。累积确认(偶尔捎带确认)。确认序列号最大的、按序......
  • 12.16记
    还是没能走上捷径。但或许本来就应该这样,我的命运就是如此,若是获得些梦幻般的事物,就理所应当失去,即便挣扎又如何,依然是失去。我如此不堪,堕落,浑浊,却无知地希冀着本不属于我的事物,被打了一巴掌之后才能清醒过来,然后继续去争取。道就应该这样吗?或许吧。或许有些东西还未失去,甚至......
  • 大数据分析项目实战总结
    通过参与一个历时两年的大数据分析项目,总结如下:1、环境熟悉,了解认证系统,各个组件了解,比如hdfs、hive、mapreduce、spark、es、kafka,各个组件都适用什么场景,如何交互2、明确了场景以后,再各自深入了解hdfs存储有哪些格式,各自优劣hive各个存储方式执行性能测试,分桶、分区等的运用mapre......
  • 闲话 2023.12.16
    从今天晚上开始要血战一整天了......
  • (学期2023-2024.1;学号:20232300)《⽹络空间安全导论》第6周学习总结
    第6章应用安全基础应用安全是为保障各种应用系统在信息的获取、存储、传输和处理各个环节的安全所涉及的相关技术的总称。密码技术是应用安全的核心支撑技术,系统安全技术与网络安全技术则是应用安全技术的基础和关键技术。应用安全涉及如何防止身份或资源的假冒、未经授权的访......
  • 2023-2024-1 20232404《网络空间安全导论》第6周学习总结
    教材学习内容总结6.1应用安全概述身份认证是保障应用安全的基础。麦肯锡全球研究所给出的定义是:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合。云计算造成了数据所有权和管理权的分离。6.2身份认证与信任管理动态口令需......
  • 12.16
    超级钢琴写了三个小时。然后光顾着调题啥也没干。唐了,交了几遍都只拿了十分,把每个部分检查完后发现原来是DP数组开小了......
  • 20231329 《计算机基础与程序设计》第12周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12这个作业的目标《C语言程序设计》第11章并完成云班课测试作业正文https://www.cnblogs.com/xjn1......
  • 2023.12.16模拟赛总结
    这次比赛打的好,但又不好,200pts,rank4,但原本可以360pts的T1每一条边减去端点贡献,最小生成树即可T2从小到大枚举花瓣数,然后对于每一列记录前四大的,防止不能转移,然后直接跑即可赛时打了一个线段树,被卡常+卡空间,hahahaT3暴力,先分解质因数,由于\(\varphi(p^k)=(p-1)p^{k-1}\),那么......