is it possible to select the screenshots from word document and crop them and then resize them to full page?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
muhammad choudhry
am 29 Dez. 2022
Bearbeitet: DGM
am 3 Jan. 2023
hi,
I am doing bit of learnign through videos on youtube, and taking screenshots of the slide so later on I can review and put comment on it. Is there a way in matlab where i can access the word document select all the screenshots in it and crop them to the size shown in the code below and then resize them A4 page? I found the methodology to do it for one image or can do it if the images are in folder but unsure about how to do it if the screenshots are in word document. file is attached
Code tried so far: (it is wrong because it is a code i used with the folder path and can not work with word file)
images = ['C:\Users\40085772\Desktop\PowerBI_PL300.docx'] ;
N = length(images) ;
I = imread(images(1).name) ;
[x, rect] = imcrop(I) ;
for i = 1:N
I = imread(images(i).name) ;
I2 = imcrop(I,[98.510000000000000,1.875100000000000e+02,1.285980000000000e+03,7.239800000000000e+02]);
end
Error:
Dot indexing is not supported for variables of this type.
0 Kommentare
Akzeptierte Antwort
DGM
am 3 Jan. 2023
Bearbeitet: DGM
am 3 Jan. 2023
Here. I'm sure there are better ways, but it seems to be simple enough that I can get away with directly editing the file.
% document is zipped so that the forum editor allows it; unzip it
unzip('Testing.zip')
% document itself is a zip archive; unzip it to a temp directory
tempdir = 'docxdump';
unzip('Testing.docx',tempdir)
% get the location of the embedded images
dirinfo = dir(fullfile(tempdir,'word/media/*.png'));
nfiles = numel(dirinfo);
% crop them and put them back
for k = 1:nfiles
thisfname = fullfile(dirinfo(k).folder,dirinfo(k).name);
thispict = imread(thisfname);
thispict = imcrop(thispict,[108 194 1263 710]);
imwrite(thispict,thisfname);
end
% take the contents of the temp directory and re-zip it
outfilename = 'modified';
dirinfo = dir(fullfile(tempdir,'*'));
dirinfo = dirinfo(~ismember({dirinfo.name},{'.','..'}));
zip([outfilename '.docx'],{dirinfo.name},tempdir)
movefile([outfilename '.docx.zip'],[outfilename '.docx'])
% remove the temp directory
rmdir(tempdir,'s')
At least that works in this simple case. The image objects are simply scaled to fit the same existing rectangular region in the document. If the cropped images had an aspect ratio that differed from the uncropped images, there would be problems.
0 Kommentare
Weitere Antworten (1)
Praharshita
am 3 Jan. 2023
Hi muhammad,
I understand that you are facing an issue while reading the image.
Try using ‘imread’ to read the image.
images=Imread('C:\Users\40085772\Desktop\PowerBI_PL300.docx')
I hope this helps.
1 Kommentar
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!