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

12.6每日总结

时间:2023-12-06 19:57:25浏览次数:39  
标签:总结 ImageIcon int Image 每日 12.6 import new frame

今天进行了软件构造的实验二,

实验二:百度图像增强与特效SDK实验(2023.12.6日完成)

    任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。

    任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。

    任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行图像增强(占30%)。

    任务四:完成图像特效GUI相关功能代码并测试调用,要求上传自己的照片进行图像特效(占30%)。

    实验总结:(占10%)

package Vfx;

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

import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;

public class Enhance {

    public static final String API_KEY = "azh8NUHqQ6xfYxsycMj5064k";
    public static final String SECRET_KEY = "RCrBgDCGT0gA0H0XuHHf8POXX5ExAi4G";

    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
    static String accessToken;

    public static void main(String[] args) {
        JFrame frame = new JFrame("Image Processing");
        frame.setSize(800, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel imageLabel = new JLabel();
        imageLabel.setBounds(0, 100, 300, 300);

        JLabel enhancedImageLabel = new JLabel();
        enhancedImageLabel.setBounds(350, 100, 300, 300);

        JButton addButton = new JButton("添加图片");
        JButton enhanceButton = new JButton("图像清晰度增强");

        addButton.setBounds(50, 50, 150, 30);
        enhanceButton.setBounds(400, 50, 150, 30);

        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser fileChooser = new JFileChooser();
                FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "jpeg", "png", "gif");
                fileChooser.setFileFilter(filter);

                int result = fileChooser.showOpenDialog(null);
                if (result == JFileChooser.APPROVE_OPTION) {
                    File selectedFile = fileChooser.getSelectedFile();
                    String imagePath = selectedFile.getAbsolutePath();

                    // 显示选择的图片并缩放大小
                    ImageIcon imageIcon = new ImageIcon(imagePath);
                    Image originalImage = imageIcon.getImage();
                    int originalWidth = originalImage.getWidth(null);
                    int originalHeight = originalImage.getHeight(null);

                    int newWidth = 300;
                    int newHeight = (int) (originalHeight * ((double) newWidth / originalWidth));

                    Image scaledImage = originalImage.getScaledInstance(newWidth, newHeight, Image.SCALE_DEFAULT);
                    ImageIcon scaledImageIcon = new ImageIcon(scaledImage);
                    imageLabel.setIcon(scaledImageIcon);
                }
            }
        });


        enhanceButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 图像清晰度增强按钮点击事件处理逻辑
                try {
                    if (accessToken == null) {
                        accessToken = getAccessToken();
                    }
                    byte[] enhancedImageData = enhanceImage(accessToken);
                    // 显示增强后的图片并进行缩放
                    ImageIcon enhancedImageIcon = new ImageIcon(enhancedImageData);
                    Image enhancedImage = enhancedImageIcon.getImage();
                    int enhancedWidth = enhancedImage.getWidth(null);
                    int enhancedHeight = enhancedImage.getHeight(null);

                    int newWidth = 300;
                    int newHeight = (int) (enhancedHeight * ((double) newWidth / enhancedWidth));

                    Image scaledEnhancedImage = enhancedImage.getScaledInstance(newWidth, newHeight, Image.SCALE_DEFAULT);
                    ImageIcon scaledEnhancedImageIcon = new ImageIcon(scaledEnhancedImage);
                    enhancedImageLabel.setIcon(scaledEnhancedImageIcon);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }

        });


        frame.add(imageLabel);
        frame.add(enhancedImageLabel);
        frame.add(addButton);
        frame.add(enhanceButton);
        frame.setLayout(null);
        frame.setVisible(true);
    }

    /**
     * 调用百度API对图像进行清晰度增强
     *
     * @param accessToken 鉴权签名(Access Token)
     * @return 增强后的图片数据
     * @throws IOException IO异常
     */
    static byte[] enhanceImage(String accessToken) throws IOException {
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
        RequestBody body = RequestBody.create(mediaType, "");
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/rest/2.0/image-process/v1/image_definition_enhance?access_token=" + accessToken)
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .addHeader("Accept", "application/json")
                .build();
        Response response = HTTP_CLIENT.newCall(request).execute();

        byte[] enhancedImageData = response.body().bytes();
        response.close();

        return enhancedImageData;
    }

    /**
     * 从用户的AK,SK生成鉴权签名(Access Token)
     *
     * @return 鉴权签名(Access Token)
     * @throws IOException IO异常
     */
    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();
        return new JSONObject(response.body().string()).getString("access_token");
    }
}

  写了一部分代码

标签:总结,ImageIcon,int,Image,每日,12.6,import,new,frame
From: https://www.cnblogs.com/louwangshayu/p/17880381.html

相关文章

  • 2023.12.6日报
    今天主要学习了设计模式的七大原则以下内容都为自己学习完后的总结和盲敲,也是测试一下自己到底记住了多少首先是单一职责原则,指的是某一个类的功能应该专一,而不应该多而杂什么意思呢,例如我们写一个javaweb,应该分不同的功能类,各司其职,例如有连接数据库的DBUtil、处理数据的Dao,......
  • 上机编程字典序排序总结
    1         字典序概念2021-0319上机编程认证的入门级&工作级第二题-可漫游服务区,输出结果要求字符串按照字典序降序排序,本文对各编程语言字典序排序方法做一个总结。题目描述漫游(roaming)是一种移动电话业务,指移动终端离开自己注册登记的服务区,移动到另一服务区(地区或......
  • 12.6
    实验二:百度图像增强与特效SDK实验一、实验要求任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行图像增强(占30%)。任务四:完成图像特......
  • 2023.12.6——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.jfinal明日计划:学习......
  • 题目集7-8 && 期末考试的总结性BLOG
    (一)前言:本篇将介绍本人在对于学校布置的两次PTA习题和期末考试习题的总结。对于第七次题目集来说,有涉及到容器HashMap的检索与排序,其中还有特殊的HashMap来存储内容,对于排序的方法也与接口有着一定的差别,同时还有多态的使用与学习,可以让你对多态有进一步的了解,对于成绩的迭代二,其......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第十周学习总结
    2023-2024-120231320《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第十周作业)这个作业的目标<自学《计算机基础与......
  • 12.6 随笔:幼儿园关闭潮 && 现代社会的人
    1、临泉县关闭50所幼儿园首先想到是中国人口下降如此之快,然后又想到自己养老怎么办?后续看了马督公的视频才发现关了50所,其中有30多所是申请开办幼儿园后连收学生都没有收之后就注销了的;然后其他有部分是因为前一年考核不合格注销的,所以根据没有说的那么夸张。思考:(1)新闻有些假的......
  • Java Spring Boot logback 日志配置与使用总结
    在项目开发中,日志是必不可少的,没有日志,怎么排查bug,而且日志也有助于我们看到相关的输入输出,总的来说,日志是日常项目开发必须要有的。今天我们学习SpringBoot中集成logback日志,这里主要会涉及到日志的配置和简单实现,更多的细节请移步官方文档,自己品读,此文档有助于初涉Sprin......
  • Java Spring Boot 常用配置总结
    在涉及项目开发时,通常我们会灵活地把一些配置项集中在一起,如果你的项目不是很大的情况下,那么通过配置文件集中不失为一个很好的解决方案。在SpringBoot中,我们可以方便地通过读取appliction.properties/application.yaml格式的配置文件,进而注入我们的项目中。1.多环境配置......
  • Linux课堂知识总结
    这是学习Linux的第七节课,老师跟我们讲述了Linux的存储管理操作。[root@linux-server~]#ll/dev/sd*#创建LVM[root@linux-server~]#pvcreate/dev/sdb#创建pv[root@linux-server~]#pvs#查看pv[root@linux-server~]#vgcreatevg1/dev/sdb#创建vg[root@linux-serve......