【代码片】图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D

本文主要是介绍【代码片】图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Graphics2D图像压缩

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;public class ImageResolutionModifier {public static void main(String[] args) {// 输入图片路径和输出图片路径String inputImagePath = "D:\\out1.png";String outputImagePath = "D:\\out1-graphics2d.jpg";// 目标宽度和高度int targetWidth = 1024;int targetHeight = 576;try {// 读取输入图片File inputFile = new File(inputImagePath);BufferedImage inputImage = ImageIO.read(inputFile);// 创建缩放后的图像BufferedImage outputImage = new BufferedImage(targetWidth, targetHeight, inputImage.getType());Graphics2D g2d = outputImage.createGraphics();g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);g2d.drawImage(inputImage, 0, 0, targetWidth, targetHeight, null);g2d.dispose();// 写入输出图片文件ImageIO.write(outputImage, "JPEG", new File(outputImagePath));System.out.println("图片分辨率修改成功,并保存到 " + outputImagePath);} catch (Exception e) {System.out.println("图片分辨率修改失败: " + e.getMessage());}}
}

Thumbnailator图像压缩

import net.coobird.thumbnailator.Thumbnails;
import java.io.File;public class ImageResolutionModifier {public static void main(String[] args) {// 输入图片路径和输出图片路径String inputImagePath = "D:\\out1.png";String outputImagePath = "D:\\out1-thumbnailator.jpg";// 目标宽度和高度int targetWidth = 1024;int targetHeight = 576;try {Thumbnails.of(new File(inputImagePath)).size(targetWidth, targetHeight).toFile(new File(outputImagePath));System.out.println("图片分辨率修改成功,并保存到 " + outputImagePath);} catch (Exception e) {System.out.println("图片分辨率修改失败: " + e.getMessage());}}
}

ImageJ图像压缩

import ij.ImagePlus;
import ij.io.FileSaver;
import ij.io.Opener;
import ij.process.ImageProcessor;public class ImageResolutionModifier {public static void main(String[] args) {// 输入图片路径和输出图片路径String inputImagePath = "D:\\out1.png";String outputImagePath = "D:\\out1-imagej.jpg";// 目标宽度和高度int targetWidth = 1024;int targetHeight = 576;try {// 打开输入图片Opener opener = new Opener();ImagePlus imp = opener.openImage(inputImagePath);ImageProcessor ip = imp.getProcessor();// 缩放图片ip = ip.resize(targetWidth, targetHeight);// 创建输出图片ImagePlus outputImage = new ImagePlus("Output Image", ip);// 保存调整分辨率后的图片到输出文件FileSaver fileSaver = new FileSaver(outputImage);fileSaver.saveAsJpeg(outputImagePath);System.out.println("图片分辨率修改成功,并保存到 " + outputImagePath);} catch (Exception e) {System.out.println("图片分辨率修改失败: " + e.getMessage());}}
}

JAI图像压缩

import javax.media.jai.Interpolation;
import javax.media.jai.JAI;
import javax.media.jai.RenderedOp;
import javax.media.jai.operator.ScaleDescriptor;public class ImageResolutionModifier {public static void main(String[] args) {// 输入图片路径和输出图片路径String inputImagePath = "D:\\out1.png";String outputImagePath = "D:\\out1-jai.jpg";// 目标宽度和高度int targetWidth = 1024;int targetHeight = 576;try {// 读取输入图片RenderedOp inputImage = JAI.create("fileload", inputImagePath);// 缩放图片RenderedOp scaledImage = ScaleDescriptor.create(inputImage, targetWidth / (float) inputImage.getWidth(),targetHeight / (float) inputImage.getHeight(), 0.0F, 0.0F, Interpolation.getInstance(Interpolation.INTERP_BICUBIC), null);// 保存调整分辨率后的图片到输出文件JAI.create("filestore", scaledImage, outputImagePath, "JPEG");System.out.println("图片分辨率修改成功,并保存到 " + outputImagePath);} catch (Exception e) {System.out.println("图片分辨率修改失败: " + e.getMessage());}}
}

OpenCV图像压缩

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;public class ImageResolutionModifier {public static void main(String[] args) {// 加载 OpenCV 库System.loadLibrary(Core.NATIVE_LIBRARY_NAME);// 输入图片路径和输出图片路径String inputImagePath = "D:\\out1.png";String outputImagePath = "D:\\out1-opencv.jpg";// 目标宽度和高度int targetWidth = 1024;int targetHeight = 576;try {// 读取输入图片Mat inputImage = Imgcodecs.imread(inputImagePath);// 创建目标尺寸的图像Mat resizedImage = new Mat();Size size = new Size(targetWidth, targetHeight);Imgproc.resize(inputImage, resizedImage, size, 0, 0, Imgproc.INTER_AREA);// 保存调整尺寸后的图像Imgcodecs.imwrite(outputImagePath, resizedImage);System.out.println("图片分辨率修改成功,并保存到 " + outputImagePath);} catch (Exception e) {System.out.println("图片分辨率修改失败: " + e.getMessage());}}
}

参考文章:选择最佳图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D
Powered By niaonao

这篇关于【代码片】图像处理工具OpenCV、JAI、ImageJ、Thumbnailator和Graphics2D的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/847520

相关文章

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

MySQL慢查询工具的使用小结

《MySQL慢查询工具的使用小结》使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询,本文就来介绍一下MySQL的慢查询工具,具有一定的参考价值,感兴趣的可以了解一下... 目录一、启用慢查询日志1.1 编辑mysql配置文件1.2 重启MySQL服务二、配置动态参数(可选)三、分析慢查

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.