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

作者: , 共 737 字

现在相机的像素实在是太高了,上次去泰山玩,朋友的 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.

类似文章:
编程 » Matlab
Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
基于将工作文件在家里电脑和公司电脑上的转移、Kindle 上电子书的管理的需求,我用 Matlab 写了几个函数,用来实现这些需求。
相似度: 0.093
编程 » Matlab, 代码准则
我所在部门也不是 IT 部门,职位也不是开发职位,但平时工作还是需要大量处理和分析数据、计算和开发各种指标等,还是需要写很多程序,语言以 VBA 和 Matlab。但同时,部门里像着我这种写程序的人并不多,别人并不看我的代码而只关心我提交的结果(说实话,大多数时候即便我写错了也不会有人知道),工作环境也不像专业的 IT 公司或部门,有严格的流程控制和工作平台。我这里没有版本控制、没有自动测试环境、没有代码格式和注释要求,也不需要去 Linux 下干活。我相信国内金融行业有不少人与我处于同样的状态。
相似度: 0.090
编程 » Matlab
写了一个统计代码量的函数,函数已上传到 Matlab Central File Exchange下载地址,使用方法:
最近做一些优化问题,找到了 YALMIP 工具包。在其帮助文件里看到如何使用该工具包求解 sudoku,整个思路是将问题转化为整数规划问题。这样的思路以前也想到过,但总觉得整数规划问题的求解会更复杂。但是下面的 Matlab 代码,显示它可以非常简洁,思路见程序的注释(程序运行需要安装 YALMIP 工具包):
编程 » Matlab
第一步,which函数可用来获取 Matlab 函数的全路径(包含路径和文件名)。
上次说起遇到两个 Matlab 的效率问题,还剩下 save , load 没说。不过这个问题的结论挺简单的,就是在 save 的时候尽量指定使用-v6 选项。
Excel、Matlab 在与数据库交互数据时,通常需要事先配置好 ODBC 数据源,这导致一个文件换到另一台机器还需要重新配置 ODBC。手工配置太麻烦,从国外一个网站看到一种解决方案:
编程 » Linux, Vim, 文件编码
由于 UNICODE 的优势,目前推荐都用 UTF-8 进行编码。
相似度: 0.062
Google 新推出了图片搜索,可直接上传图片(或者用图片链接)搜索网络上的相似图片,例子。估计还没多少人意识到,这玩意儿是人肉搜索的大杀器,以后大家还是少上传私人照片到公开网络。
最近做一些优化问题,找到了 YALMIP 工具包。在其帮助文件里看到如何使用该工具包求解 sudoku,整个思路是将问题转化为整数规划问题。这样的思路以前也想到过,但总觉得整数规划问题的求解会更复杂。但是下面的 Matlab 代码,显示它可以非常简洁,思路见程序的注释(程序运行需要安装 YALMIP 工具包):
Excel、Matlab 在与数据库交互数据时,通常需要事先配置好 ODBC 数据源,这导致一个文件换到另一台机器还需要重新配置 ODBC。手工配置太麻烦,从国外一个网站看到一种解决方案: