首页 > 其他分享 >swing的图像更改的这个这个额叫啥来着,就是文件??差不多

swing的图像更改的这个这个额叫啥来着,就是文件??差不多

时间:2023-12-04 20:24:34浏览次数:30  
标签:java String 更改 image swing new 图像 import public

首先还是展示架构

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,更改,image,swing,new,图像,import,public
From: https://www.cnblogs.com/cocotun/p/17875852.html

相关文章

  • 一个关于swing实时翻译的java文件
    首先是我的架构,分别是启动,百度api接口的调用文件,swing的界面设计文件 其中的依赖是酱紫的(自己敲)<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.9</version>......
  • 超越极限:SDXL Turbo的实时图像生成
    引言 在人工智能的迅猛发展中,图像生成技术一直是研究的热点。最近,Stability.ai推出的SDXLTurbo模型在这一领域取得了显著的突破,尤其是在提升出图效率方面,实现了重要的进展。模型概述 SDXLTurbo是基于SDXL1.0开发而成的,采用了一种全新的对抗扩散蒸馏技术(ADD),将图像所需的生成步......
  • 如何利用图像优化提升SEO效果
    除了文字内容,图像也是网站SEO优化中的重要元素。本文将为您介绍一些有效的方法和技巧,帮助您利用图像优化来提升网站的搜索引擎排名和用户体验。1.使用高质量的图片:首先,选择高质量、高清晰度的图片可以增加用户的阅读体验和网站的专业感。同时,高质量的图片也有助于提高搜索引擎的识......
  • 基于FPGA的RGB图像转Ycbcr实现,包括tb测试文件以及MATLAB辅助验证
    1.算法运行效果图预览 将FPGA的数据导入到matlab进行显示    2.算法运行软件版本Vivado2019.2 matlab2022a 3.算法理论概述     基于FPGA的RGB图像转Ycbcr转换的实现,主要是通过数字电路的设计,利用硬件并行处理的能力,快速完成图像数据的转换。   ......
  • 机器视觉中的图像增强与对比度调整技术
     在机器视觉中,图像增强与对比度调整技术是常用的方法,旨在改善图像的质量和视觉效果,或将图像转换成更适合人眼观察或机器分析识别的形式。图像增强技术可以针对给定图像的应用场合,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征。例如,可以扩......
  • Java开发者的Python快速实战指南:探索向量数据库之图像相似搜索-文字版
    首先,我要向大家道个歉。原本我计划今天向大家展示如何将图片和视频等形式转换为向量并存储在向量数据库中,但是当我查看文档时才发现,腾讯的向量数据库尚未完全开发完成。因此,今天我将用文本形式来演示相似图片搜索。如果您对腾讯的产品动态不太了解,可以查看官方网址:https://cloud.t......
  • 如何实现图像搜索,文搜图,图搜图,CLIP+faiss向量数据库实现图像高效搜索
     如何实现图像搜索,文搜图,图搜图,CLIP+faiss向量数据库实现图像高效搜索这是AIGC的时代,各种GPT大模型生成文本,还有多模态图文并茂大模型,以及stablediffusion和stablevideodiffusion图像生成视频生成等新模型,层出不穷,如何生成一个图文并貌的文章,怎么在合适的段落加入图像,图......
  • 基于FPGA的图像形态学膨胀算法实现,包括tb测试文件和MATLAB辅助验证
    1.算法运行效果图预览在FPGA中仿真结果如下所示:   将FPGA中的仿真结果导入到matlab显示二维图,效果如下:   2.算法运行软件版本matlab2022a vivado2019.2 3.算法理论概述      膨胀操作是形态学中另外一种基本的操作。膨胀操作和腐蚀操作的作用是相......
  • 图像批量设计软件 Retrobatch Pro mac功能介绍
    RetrobatchMac是一款灵活的批量图像处理工具。用户可以自由创建Workflow来实现相应的功能,这些Workflow能取代大量的重复劳动,提高生产力。RetrobatchMac的一般操作是从左边栏拖动相应动作到工作区形成节点(Nodes),节点连接起来形成一个Workflow,最后运行这个Workflow即可。Retrobatch......
  • 图像分类训练集与测试集划分
    图片数据集划分的方式与方法有很多,比如先将图片转换为矩阵,再使用scikit-learn包去划分。为了使得数据集更灵活,本文介绍python实现图片分类数据集的划分。假设现在的数据集文件夹为flower_images,flower_images文件夹中有5类,每个类1000张。使用自己的python代码:splitd......