当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [原创]使用Matlab将图片批量转化为eps格式(for TeX user)
帖子发表于 : 2008-04-14 17:35 
头像

注册: 2007-10-29 1:18
帖子: 37
地址: China
送出感谢: 0 次
接收感谢: 0 次
  刚刚在 Ubutnu 下把 TeX 的中文支持装好,需要批量转换图片,大致搜索了一下,貌似没有找到比较好的工具,于是自己在 Matlab 下编写了一个程序,可将 Matlab 中 imread() 函数所支持的所有格式的图片均转化为 eps 格式。程序清单如下:

引用:

function status = image2eps(directory)

%
% ---> M-file name: IMAGE2EPS.M <---
% ---> Created environment: Matlab R2007b <---
%
% IMAGE2EPS(DIRECTORY) Create EPS files movie from images.
%
% STATUS = IMAGE2EPS() converts all image files in current directory
% into EPS files.
%
% STATUS = IMAGE2EPS(DIRECTORY) converts all image files in the directory
% appointed by DIRECTORY into EPS files.
%
% This function would be quite useful while you are using LaTeX and want
% to insert an image into your TeX document. Current supported image
% file formats here:
%
% This function be quite useful while you are using LaTeX and want to
% insert an image into your TeX document. Current supported image file
% formats here:
%
% | .bmp | .cur | .gif | .hdf | .ico | .jpeg | .jpg | .pbm | .pcx | .pgm |
% | .png | .ppm | .ras | .xwd | .tif | .tiff |
%
% Letters in extensions can be either big or small.
%
% See also imread, imshow, print.
%
% Programmed by Long Chao, Beihang Univsrsity
% QQ: 409053987
% E-mail and/or MSN: cshishaliu@163.com
% ALL RIGHTS OPEN
% Monday, April 14. , 2008
%

% --- Get name of the file in directory appointed ----

if nargin == 0
fileinfo = dir;
directory = './';
else
fileinfo = dir(directory);
end

if directory(end) ~= '/'
directory = [directory,'/'];
end

filename = struct2cell(fileinfo);
filename = filename(1,3:end)';


% --- Get supported file formats ---

% Get the formats whose extension is made up of three letters
supportformats3 = ['.bmp';'.cur';'.gif';'.hdf';'.ico';'.jpg';'.pbm';'.pcx';'.pgm';'.png';'.ppm';'.ras';'.xwd';'.tif'];
% Get the formats whose extension is made up of three letters
supportformats4 = ['.jpeg';'.tiff'];


% --- Convert images in the directory ---

figure; % Open a new figure

for i = 1:size(filename,1);
name = [directory,char(filename(i))];
if size(name,2) >= 4 % File name was required to be not less than 4 letters

% Find if the current file is supported and has an extension made up of THREE SMALL letters
if max( sum( (( ones(size(supportformats3,1),1) * name((end-3):end) ) == supportformats3)' ) ) == 4
imshow(imread(char(name)));
print('-depsc',name(1:(end-4)));
end

% Find if the current file is supported and has an extension made up of THREE BIG letters
if max( sum( (( ones(size(supportformats3,1),1) * (name((end-3):end) + [0,32,32,32]) ) == supportformats3)' ) ) == 4
imshow(imread(char(name)));
print('-depsc',name(1:(end-4)));
end

% Find if the current file is supported and has an extension made up of FOUR SMALL letters
if max( sum( (( ones(size(supportformats4,1),1) * name((end-4):end) ) == supportformats4)' ) ) == 4
imshow(imread(char(name)));
print('-depsc',name(1:(end-5)));
end

% Find if the current file is supported and has an extension made up of FOUR BIG letters
if max( sum( (( ones(size(supportformats4,1),1) * (name((end-4):end) + [0,32,32,32,32]) ) == supportformats4)' ) ) == 4
imshow(imread(char(name)));
print('-depsc',name(1:(end-5)));
end
end
end

status = 0; % Return a zero

close; % Close the figure opened



  在这里推荐给大家使用,也欢迎各位牛人对其进行改进!
使用方法举例:
引用:
>>image2eps()

此命令将 Matlab 当前工作目录 (Current Directory) 中的所有图片转换为 eps 格式;

引用:
>>image2eps('/home/user/Pictures/')

此命令将目录 /home/user/Pictures/ 的所有图片转换为 eps 格式。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-04-14 18:01 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
感觉还是imagemagick简单一些

convert aaa.jpg aaa.eps

将一个目录中的文件转成eps也不复杂


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-04-15 0:25 
头像

注册: 2005-08-15 0:04
帖子: 1880
地址: 南7技校
送出感谢: 0 次
接收感谢: 0 次
matlab 太大了。。相比之下 convert 好多了。

再说转出来的 eps 效果也未必很好, pdflatex 也支持 jpg/png 的....

不过楼主分享经验的做法很值得推崇。。


_________________
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn


页首
 用户资料  
 
4 楼 
 文章标题 : 请那位大牛向我详细介绍一下 Linux 下的 eps 转换工具
帖子发表于 : 2008-04-15 1:06 
头像

注册: 2007-10-29 1:18
帖子: 37
地址: China
送出感谢: 0 次
接收感谢: 0 次
引用:
matlab 太大了。。相比之下 convert 好多了。

再说转出来的 eps 效果也未必很好, pdflatex 也支持 jpg/png 的....

不过楼主分享经验的做法很值得推崇。。


请那位大牛向我介绍一下 Linux 下的 eps 转换工具,怎么用。

我刚从 Windows 转到 Linux 下来用 TeX ,什么都不熟,今天也是迫于无奈,才想这么个办法。

不过我本人用 Matlab 还比较多,如果是在没辙,以后可能就只能这样了。

我用这个程序转着试过,效果还不错,但是还是有 Matlab 的一个老毛病——就是慢!


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-04-15 7:45 
头像

注册: 2005-12-15 21:52
帖子: 351
送出感谢: 0 次
接收感谢: 0 次
楼上的几位已经说了,安装imagemagick,命令行就会多出convert命令,convert --help可以知道可选的参数。
话说似乎现在Tex支持的图像格式已经很多了,在文档中引用一个宏包,jpg,gif,bmp等图形都可以直接嵌入。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-04-15 17:29 

注册: 2006-09-20 19:56
帖子: 768
送出感谢: 0 次
接收感谢: 1
准确地说,pdftex不支持eps格式,而现在用的最多的可能正是pdftex。

本来Dia可以将图象导出为利用pgf宏包表达的tex文件(最后生成的是矢量图),但可惜Dia基本没有数学处理能力。

不过它好像有python接口的,那么,就一切皆有可能了,HOHO。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 请那位大牛向我详细介绍一下 Linux 下的 eps 转换工具
帖子发表于 : 2008-04-15 19:07 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
cshishaliu 写道:
引用:
matlab 太大了。。相比之下 convert 好多了。

再说转出来的 eps 效果也未必很好, pdflatex 也支持 jpg/png 的....

不过楼主分享经验的做法很值得推崇。。


请那位大牛向我介绍一下 Linux 下的 eps 转换工具,怎么用。

我刚从 Windows 转到 Linux 下来用 TeX ,什么都不熟,今天也是迫于无奈,才想这么个办法。

不过我本人用 Matlab 还比较多,如果是在没辙,以后可能就只能这样了。

我用这个程序转着试过,效果还不错,但是还是有 Matlab 的一个老毛病——就是慢!


其实在windows下,用imagemagick应该也比用matlab方便,另外 gimp在linux/windows下也都可以用。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译