.BMP到.jpg图像的转换

121次(过去30天)
肖恩
肖恩 2015年2月16日
评论: 埃里克2015年2月17日
Im使用下面的代码将.bmp图像转换为.jpeg,输入命令窗口后不会出现错误。但是,没有新的图像写入“JPEG数据”文件夹,有人能帮忙吗?
%从文件加载图像
文件路径='.\Project\Matlab文件夹\BMP数据';
锉刀='.\Project\Matlab文件夹\JPEG数据';
%在文件夹filePathIn中加载.bmp文件的名称
d=目录([文件路径,'*.bmp']);
%对于目录中的每个.bmp文件,转换为jpg
对于i=1:长度(d)
%读取.bmp文件
fname=d(i).name;
%BMP=imread([filePathIn,d(i.name]);
BMP=imread([filePathIn,fname]);
%转换为jpg并使用.jpg扩展名重命名
fname=[fname(1:结束-4),'.jpg'];
imwrite(BMP,[filePathIn,fname],'jpg');
%以.jpg格式重新加载此文件
A=imread([filePathIn,fname]);
rgbImage=repmat(A,[1 1 3]);
%将jpg图像写入新文件夹
imwrite(rgbImage,[filePathOut,fname],'JPEG','质量',100);
结束

0条评论

登录发表评论。

接受的答案

图像分析员
图像分析员 2015年2月16日
肖恩,试试这个密码:
%演示如何在不同文件夹中创建BMP文件的JPG副本。
%图像分析员
%inputFolder=fileparts(其中摄影师.tif')%确定演示文件夹的位置(适用于所有版本)。
inputFolder=fullfile(pwd,'项目\Matlab文件夹\BMP数据');
filePattern=fullfile(输入文件夹,'*.bmp')
%获取输入文件夹中所有BMP文件的列表
bmpFiles=dir(文件模式)
%创建输出文件夹:
outputFolder=fullfile(pwd,'项目\Matlab文件夹\JPEG数据')
如果~存在(outputFolder,'目录')
mkdir(输出文件夹);
结束
数字;
%放大到全屏。
设置(gcf,'单位','标准化','外部位置',[0 0 1 1]);
%循环所有bmp文件,生成jpg版本
%在输出文件夹中。
对于k=1:长度(bmpFiles)
%读入.bmp文件
baseFileName=bmpFiles(k).name;
fullFileNameInput=fullfile(inputFolder,baseFileName)
rgbImage=imread(完整文件名输入);
子块(1,2,1);
图像显示(rgbImage);
标题('原始图像','字体大小',30分);
抽签;
%准备输出文件名
fullFileNameOutput=fullfile(输出文件夹,baseFileName);
%转换为JPEG并为其提供.jpg扩展名
fullFileNameOutput=strrep(下(fullFileNameOutput),'.bmp','jpg')
imwrite(rgbImage、fullFileNameOutput);
%以JPEG格式重新加载它,以查看压缩工件有多糟糕。
rgbImage=imread(完整文件名输出);
子块(1,2,2);
图像显示(rgbImage);
标题('召回的JPG图像','字体大小',30分);
抽签;
暂停(1);
结束
%打开Windows资源管理器到输出文件夹:
winopen(输出文件夹);

1条评论

肖恩
肖恩 2015年2月16日
很好,让它工作,真的很好的符号以及,非常好的遵循。谢谢你的帮助,非常感谢。

登录发表评论。

更多答案(1)

哑光短线
哑光短线 2015年2月16日
看起来你的文件夹名和文件名之间缺少路径分隔符。您应该使用fullfile函数将路径与文件名结合起来,而不是尝试使用[]来完成。

6条评论

显示 3条旧评论
图像分析员
图像分析员 2015年2月16日
不,你不能。复制一个文件并给它一个新的扩展名只会改变文件名,而不是文件中的数据。必须先调用imread(),然后使用新文件名调用imwrite()。您不需要像上面显示的代码那样调用它们两次。
肖恩
肖恩 2015年2月16日
我用下面的代码实现了它,尽管新的图像是在同一个目录中重新编写的。因此,问题在于在新文件夹中写入图像。
%在工作目录中创建位图图像的结构
d=方向('*.bmp');
对于i=1:长度(d)
%读取.bmp文件
fname=d(i).name;
BMP=imread(fname);
%转换为JPEG并为其提供.jpg扩展名
fname=[fname(1:结束-4),'.jpg'];
imwrite(BMP,fname,'jpg');
%以JPEG格式重新加载
A=imread(fname);
rgbImage=repmat(A,[1 1 3]);
%重写到工作目录中
imwrite(rgbImage,fname,'JPEG','质量',100);
结束
埃里克
埃里克 2015年2月17日
这就是我在上面的评论中所说的。我不是要复制BMP文件并简单地将其重命名为JPG,而是要将第一个jpeg(正确写入的jpeg)复制到写入失败的位置。
你可以检查两件事:
一。当您试图写入输出目录时,它是否存在?
2。你对这个目录有写权限吗?
-埃里克

登录发表评论。

登录来回答这个问题。