在MatLab中保存图像并使用当前文件名

3
我有一个脚本,可以从我的当前工作目录中一次获取一个文件并绘制指定的信息。我想将每个绘图保存为jpeg格式(tiff也可),并以它正在绘制的文件名命名。我有大约3000个文件,因此我正在寻找自动化完成此操作的方法。
我认为,如果将以下内容放在for循环的末尾,可能会起作用:
saveas(gcf, '   ',jpg)

我不确定文件名中需要用引号括起来的内容。

示例

data1.mat 中数据的图应保存为 data1.jpeg 文件。


你能提供一部分代码吗?但是可以使用函数getframe将图像检索到一个图形中。然后只需使用imwrite保存它。 - Vuwox
2个回答

2
如果loadedFileName是刚加载文件的名称(可能包括路径),那么你可以像下面这样做,以相同的文件名保存jpeg文件。
% get the path, name and extension of the file just loaded
[path, name, ext] = fileparts(loadedFileName);

% grab what you want to create the filename of the jpeg to save
jpegToSaveFileName = [name '.jpg'];   % use path if you want to save to same directory

% save the figure as a jpeg
saveas(gcf,jpegToSaveFileName,'jpg');

尝试上述方法并查看结果。如果需要在文件名中添加路径,则可以进行如下操作:

jpegToSaveFileName = fullfile(path, jpegToSaveFileName);

尝试上述方法,看它是否能满足您的需求!


这正是我所需要的。在脚本的早期,我们将文件名定义为for循环中的下一个项目,因此我在您放置“loadedfilename”的位置使用了它,并且它完美地工作: for jj=1:length(allfiles) % clf; fileName = allfiles(jj).name;inputfile = fopen(fileName);然后在for循环的结尾处,我使用了您的代码片段。非常感谢! - Tiffany G

0

由于您的脚本已经具备文件名的信息(否则它无法打开文件并读取数据),所以您可以简单地在文件名后面加上'.jpg',然后将该字符串传递给saveas函数。以下是针对文件名'hello'的演示:

>> filename = 'hello'
filename =
hello
>> picname = [filename, '.jpg']
picname =
hello.jpg
>> a = figure
a =
 4
>> saveas(a, picname)
>> ls
hello.jpg

@TiffanyG 没问题。如果您能接受最有帮助的答案,那就太好了。 - timgeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接