批量修改图片大小的Matlab脚本

系列:生活中的Matlab
查看该系列所有文章

现在相机的像素实在是太高了,上次去泰山玩,朋友的1200万像素的D90照出来的照片分辨率高达4288×2848,即使转为jpg格式,每张都在5M以上。而现在电脑屏幕的分辨率最高也在1920以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。

网上找到的图片批处理软件要么太大、要么收费、要么会加水印,一怒之下自己用matlab写了一个。

resizephotos.m 5.9 KiB
批处理的方式降低图片大小

如果只是处理单张图片,matlab用三行代码就可以搞定。这个脚本里大部分代码都在处理文件信息和进行交互,让脚本的使用比较方便。具体说来可以这么用

1、命令行输入 resizephotos -dir 800:  弹出目录选择框。同时将弹出对话框询问是否处理子目录和询问是否覆盖原文件。如果不覆盖原文件,则建立新文件和目录,名字为原名字前加前缀’resize-'。其中800为resize后的最大图片分辨率,默认值为1600。

2、命令行输入 resizephotos -dir 800: 弹出文件选择框,可选择多个文件进行处理。

3、也可以直接指定目录和文件名,比如resizephotos(file_or_directory, max_width_and_height, is_recursive,  is_overwrite, path_to_save)。其中path_to_save如果省略的话将根据参数is_overwrite自动选择。

Matlab在处理图片时,是将图片作为一个RGB矩阵处理,共三维,1200万像素的图片将用3600万个数来表示,占用36M内存。所以上面这个脚本速度很慢。

Q.E.D., ©zhiqiang, 2010.10.1。请参考右边的相关文章列表。


  1. 看来picasa的用户还不少,我也是picasa的深度用户,但一直没发现它有批处理修改图片大小的功能。刚仔细找了下,原来在导出功能里面。。。不过只适用于单文件夹的情况,所以我也不算完全白写。

    Sunny说的imageresizer对单张照片什么的很方便,可惜自定义性太少,要完全实现我说的功能,估计就那个jpeg resizer可行吧

  2. 好软件还是有的,xnview就可以,光影魔术手也可以,建议前者,浏览、批量操作很方便。

  3. 目光看得远一点,若干年之后就有4288×2848的显示器了。现在买个T级别的硬盘也不是那么贵呢

  • 评论由多说提供支持。该系统支持使用微薄、人人网和QQ的账户登陆,由各自网站直接认证,不会泄露你的密码。
  • 登陆后可选择分享评论到所绑定的社交网络,如微薄、人人和QQ空间。
  • 评论无法修改。如需修改,请删除原评论重新提交。
  • 评论支持LaTeX代码,行内公式请用\(a+b=c\),行间公式请用\[a+b=c\]。公式只支持英文字符。
Loading...
Loading...
Loading...