现在相机的像素实在是太高了,上次去泰山玩,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
网上找到的图片批处理软件要么太大、要么收费、要么会加水印,一怒之下自己用 Matlab 写了一个。
[download id="4"]
如果只是处理单张图片, 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.