Reducing the size of images by a loop

Here I reduced the size of an image. But I want to reduce the size of all the images of my folder. Images are : abc_20190304_0001 to abc_20190304_0095. How can I make the loop?
I=imread('abc_20190304_0001.png');
imshow abc_20190304_0001.png
L = imresize(I,.25,'bilinear');
figure, imshow(L);

 Risposta accettata

imgNames = dir('*.png') ; % give your exntenion of images in the folder
N = length(imgNames) ; % toal number of images
% loop for each image
for i = 1:N
thisImg = imgNames(i).name ;
I=imread(thisImg);
figure(1)
imshow(I) ;
L = imresize(I,.25,'bilinear');
figure(2)
imshow(L);
end

7 Commenti

Can I save the new reduced images by the same name or 1.png, 2.png.. etc in a separate folder?
Yes, you can. Read about imwrite.
thepath = ''; % give path of the folder here
for i = 1:N
thisImg = imgNames(i).name ;
I=imread(thisImg);
figure(1)
imshow(I) ;
L = imresize(I,.25,'bilinear');
figure(2)
imshow(L);
% WRite image into a folder
name = [thepath,filesep,num2str(i),'.png'] ;
imwrite(L,name)
end
Yes its working. The names of the files are like abc_20190304_0001,abc_20190304_0002, abc_20190304_0003 etc. Can we save the files in that way? Or in the 4digit format like.. 0001.png,0002.png etc
actually when the code read the files, it reads as 0001,0002....0011..0095 etc, but when it saves the files it saves as 1.png,2.png....22.png etc.
so when i make the video of the files .. the continuation of the files gets scattered. so i want to save the files in 4digit format
imgNames = dir('*.png') ; % give your exntenion of images in the folder
N = length(imgNames) ; % toal number of images
thepath = ''; % give path of the folder here
% loop for each image
for i = 1:N
thisImg = imgNames(i).name ;
I=imread(thisImg);
figure(1)
imshow(I) ;
L = imresize(I,.25,'bilinear');
figure(2)
imshow(L);
% WRite image into a folder
[filepath,name,ext] = fileparts(thisImg) ;
name = [thepath,filesep,name,'.png'] ;
imwrite(L,name)
end
Can you just make me understand the last two lines...
consider my path name is : E:\MW\Channel
and I want to save it in the same folder as : abc_20190304_0001, abc_20190304_0002 ....abc_20190304_0095 etc
You can use sprintf()
baseFileName = sprintf('%4.4d.png', i); % 0001.png for example.
fullOutputFileName = fullfile(outputFolder, baseFileName);
imwrite(L, fullOutputFileName);

Accedi per commentare.

Più risposte (1)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by