【代码片】图像处理工具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

相关文章

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

opencv 滚动条

参数介绍:createTrackbar( trackbarname , "hello" , &alpha_slider ,alpha_max ,  on_trackbar )  ;在标签中显示的文字(提示滑动条的用途) TrackbarName创建的滑动条要放置窗体的名字 “hello”滑动条的取值范围从 0 到 alpha_max (最小值只能为 zero).滑动后的值存放在

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip