im4java 文档_im4java学习---阅读documentation文档

Utilities----im提供的一些工具类

①、读取图片文件信息---Info类

我们之前的做法:

op.format("width:%w,height:%h,path:%d%f,size:%b%[EXIF:DateTimeOriginal]");

IdentifyCmd identifyCmd = new IdentifyCmd(useGM);

使用工具类Info:

Info imageInfo = new Info(filename,true);

System.out.println("Format: " + imageInfo.getImageFormat());

System.out.println("Width: " + imageInfo.getImageWidth());

System.out.println("Height: " + imageInfo.getImageHeight());

System.out.println("Geometry: " + imageInfo.getImageGeometry());

System.out.println("Depth: " + imageInfo.getImageDepth());

System.out.println("Class: " + imageInfo.getImageClass());

第二个参数true,表示只获取图片的基本信息。 ***这个工具类,在1.3.0版本之前,方法实现有问题。针对TIF和GIF图片,

imageInfo.getImageWidth() 返回的是第一帧的图片宽度(原文是first scene)

这个问题我也不懂,只是写出来下,大家都注意下,详细的还是看文档吧。

②、读取某个目录下所有指定后缀的图片文件---FilenameLoader类

你还在用这种批量图片处理方式么?

public void resizeImages(String... pImageNames)

恭喜你,out了。嘿嘿,开玩笑^-^

让我们来看下新的方法:

ExtensionFilter filter = new ExtensionFilter("jpg");//指定后缀

filter.setRecursion(true);//递归扫描

filter.ignoreDotDirs(true);//忽略那些带点的隐藏目录(此处是个人说法,看到过,Android手机里很多这目录,但是不懂到底怎样命名)

FilenameLoader loader = new FilenameLoader(filter);

List files = loader.loadFilenames(mydir);//mydir文件夹路径

这个类在API文档中有详细介绍。

③、既然有批量转换,我们也需要命令这一大堆目标文件的名称---FilenamePatternResolver类

// define operation and command

IMOperation op = new IMOperation();

op.addImage(); // input-file

op.addImage(); // output-file

ConvertCmd cmd = new ConvertCmd();

// load files

ExtensionFilter filter = new ExtensionFilter("jpg");

FilenameLoader loader = new FilenameLoader(filter);

List files = loader.loadFilenames(mydir);

// create the resolver-----看这里,baby go

FilenamePatternResolver resolver =

new FilenamePatternResolver("%P/%f.tif");

// now iterate over all files

for (String img:files) {

cmd.run(op,img,resolver.createName(img));

}

个人理解:你不用每次都拼凑目标图片名字了,有很便利的方法实现。

%P: full pathname of source-image (i.e. the directory)

%p: last component of %P(用于相对路径?)

%F: full filename without directory part

%f: filename without directory part and extension

%e: only the extension

%D: drive-letter (on windows systems). Not available for source-files with an UNC-name.(盘符C:...)

这样就好理解

new FilenamePatternResolver("%P/%f.tif");了,就是绝对目录路径+文件名+tif

④、Debugging--窝不是类,只是一种操作方法

版本号>1.0,这个一般都是成立的。

IMOperation op = new IMOperation();

...

ConvertCmd cmd = new ConvertCmd();

cmd.createScript("myscript.sh",op);

没错,就是它了。把最后要执行的cmd+op备份到myscrip.sht脚本中。

在windows下,createScript()生成的脚本会自动加上 .bat 后缀

⑤、批量转换处理(适用于客户端程序,不适合web-application)

ExtensionFilter filter = new ExtensionFilter("jpg");

filter.setRecursion(false);

FilenameLoader loader = new FilenameLoader(filter);

List images=loader.loadFilenames(dir);

After you have the list, you create your BatchConverter and use it's run()-method to process the images:

// create a simple thumbnail operation

op = new IMOperation();

op.size(80);

op.addImage(); // placeholder input filename

op.thumbnail(80);

op.addImage(); // placeholder output filename

// create a template for the output-files:

// we put them in targetDir with the same filename as the original

// images

String template=targetDir+"%F";

// create instance of BatchConverter and convert images-----看这里,baby go

BatchConverter bc = new BatchConverter(BatchConverter.Mode.PARALLEL);

bc.run(op,images,targetDir+"%F");

BatchConverter有三种执行模式:BatchConverter.SEQUENTIAL,BatchConverter.PARALLEL,BatchConverter.BATCH。

分别为顺序处理,并行处理(CPU多核),批处理(单核)

最后,还是推荐大家去看下官方英文文档,本人水平有限,本着交流的精神,所以才发帖献丑一番,主要是为了记录自己的学习过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

函数体中定义的结构体和类型

源代码&#xff1a; 1 #include <stdio.h>2 struct smonth // point 13 {4 int a;5 int b;6 };7 8 int func1()9 { 10 struct smonth{ 11 int a; 12 int b; 13 }; 14 15 ty…

java listview用法_Java ListView.setMultiChoiceModeListener方法代码示例

import android.widget.ListView; //导入方法依赖的package包/类Overridepublic void onActivityCreated(Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);lAdapter new LabelAdapter(getActivity(), null, 0);setListAdapter(lAdapter);g…

预编译指令与宏定义

#if #elif [defined(), !defined()] #else #ifdef #ifndef #endif // 条件编译 /* 头文件防止多次被包含 */ #ifndef ZLIB_H #define ZLIB_H#endif /* ZLIB_H *//* 用C方式来修饰函数与变量 */ #ifdef __cplusplus extern "C" { #endif int add(int a, …

java mock server_java – 使用MockRestServiceServer模拟REST调用

我正在尝试编写一个JUnit测试用例,用于测试辅助类中的方法.该方法使用REST调用外部应用程序,这是我试图在JUnit测试中模拟的调用.辅助方法使用Spring的RestTemplate进行REST调用.在我的测试中,我创建了一个模拟REST服务器并模拟REST模板并将它们实例化为&#xff1a;Beforepubl…

BZOJ 2597 剪刀石头布(最小费用最大流)(WC2007)

Description 在一些一对一游戏的比赛&#xff08;如下棋、乒乓球和羽毛球的单打&#xff09;中&#xff0c;我们经常会遇到A胜过B&#xff0c;B胜过C而C又胜过A的有趣情况&#xff0c;不妨形象的称之为剪刀石头布情况。有的时候&#xff0c;无聊的人们会津津乐道于统计有多少这…

java swt最小化到托盘_SWT 中实现最小化到托盘图标,并只能通过托盘的弹出菜单关闭程序...

package com.unmi;import org.eclipse.swt.*;import org.eclipse.swt.events.*;import org.eclipse.swt.graphics.*;import org.eclipse.swt.widgets.*;/*** SWT 3.0 开始引入了 Tray&#xff0c;可以在系统栏放置你的程序图标了* 本程序实现的功能有四&#xff1a;* 1. 点击窗…

HDU 1476 Sudoku Killer

Sudoku Killer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3367 Accepted Submission(s): 1063 Problem Description自从2006年3月10日至11日的首届数独世界锦标赛以后&#xff0c;数独这项游戏越来越受到…

java .net 互通redis_C# servicestack.redis 互通 java jedis

本文是基于jedis的一致性环哈希来修改的&#xff0c;.net选的是servicestack.redis组件来修改无奈两个组件都有各自的一致性环哈希算法&#xff0c;不兼容&#xff0c;那就选一个作为标准&#xff0c;修改另一个咯。本文选择jedis的一致性环哈希作为标准&#xff0c;进而修改.n…

java 多重压缩下载_Java 多文件边压缩边下载

有时我们希望在后台实时生成文件并下载到客户端GetMapping(value "download")public void download(HttpServletResponse response) {try(OutputStream outputStream response.getOutputStream();ZipOutputStream zipOutputStream new ZipOutputStream(outputStre…

wdatepicker使用指南

wdatepicker使用指南 http://blog.csdn.net/zengxin2008/article/details/7248964#t63posted on 2013-09-22 15:45 moonfans 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/moonfans/p/3333251.html

纵表、横表互转的SQL

纵表、横表互转的SQL By&#xff1a;大志若愚 1、建表&#xff1a; 纵表结构 Table_A create table Table_A (姓名 varchar(20),课程 varchar(20),成绩 int ) insert into Table_A(姓名,课程,成绩) values(张三,语文,60) insert into Table_A(姓名,课程,成绩) values(张三,数学…

java按照商品价格排序_按照指定的类型排序

比如有三本书&#xff0c;书名和价格分别如下&#xff1a;《猎物》18.4元、《大明王朝》59.0元、《快乐密码》25.0元。前几天的一篇文章中讲到按照中文拼音进行排序&#xff0c;这里如果想按照价格排序的话怎么办&#xff1f;其实这里就牵涉到在Java中怎样对对象进行排序处理&a…

6款帮助 滚动视差jquery插件

在网页设计中&#xff0c;视差滚动&#xff08;Parallax Scrolling&#xff09;是当下流行的网页设计技术&#xff0c;通过让多层背景以不同的速度或者不同的方向移动来形成非常有趣的 3D 运动效果。下面是一些运用视差滚动效果的优秀网页案例&#xff1a; 视差&#xff08;Pa…

java i线程安全吗_Java中 i++ 是线程安全的么?为什么?

问题在 int i 0; i i; 语句中&#xff0c;i i是线程安全的么&#xff1f;如果不安全&#xff0c;请说明上面操作在JVM中的执行过程&#xff0c;为什么不安全&#xff1f;说出JDK中哪个类能达到以上的效果&#xff0c;并且是线程安全而且高效的&#xff0c;简述其原理。回答语…

EBS 多组织访问设置

如果想让你的职责下为单组织模式&#xff0c;那么你在Profile下只设置MO: Operating Unit的值&#xff0c;MO: Operating Unit提供只访问一个单独的OU。如果你想让你的职责下为多组织模式&#xff0c;你需要设置MO: Security Profile&#xff0c;MO: Security Profile提供多组织…

java第k小元素_java – 如何从对象列表中提取K“最小”元素?

我会对清单进行排序.然后,我将创建一个包含这10个最小对象的列表,并更改原始列表list1以包含其余对象.就像是&#xff1a;Collection.sort(list1);ArrayList yourSmallestElements (ArrayList)(list1.sublist(0, 9).clone());list1.removeAll(yourSmallestElements);注意&…

JQuery学习系列总结—菜单制作

1、页面中的菜单项可以通过嵌套的ul和li来表示 2、菜单最外层为ul&#xff0c;一层每个主菜单放在一个li中&#xff0c;如果有子菜单&#xff0c;在这个主菜单的li中建立新的ul&#xff0c;再依次嵌套即可构建多层的菜单 3、浏览器中ul和li元素默认情况下文字前都有圆点标识符&…

mysql 大量列 动态变量_aardio动态mysql变量设置

aardio动态mysql变量设置aardio动态mysql变量设置废话不多说&#xff0c;直接开始干活&#xff01;从上午度娘到现在&#xff01;终于有点结果&#xff01;需求是从数据库读取数据&#xff0c;根据条件(变量)直接上代码&#xff0c;如有任何问题&#xff0c;欢迎老铁指正&#…

制作简单的java应用程序_使用exe4j工具制作简单的java应用程序

首先需要下载exe4j工具并进行安装&#xff0c;下面是利用exe4j工具制作应用程序的步骤。1.首先将工程导出为可运行的jar包&#xff0c;选择extract required libralies into generated java&#xff0c;会将引用到的jar包也打到里面。右键java工程--export--java--runnable jar…

HDU 4422 The Little Girl who Picks Mushrooms(简单题)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4422 题目大意&#xff1a;小姑娘背着5个包去山上采蘑菇&#xff0c;每座山上只能用一个背包采集。三个小精灵会要她3个背包&#xff0c;其里面蘑菇的数量必须是1024的倍数&#xff0c;否则5个背包都会被拿走。…