有没有办法从文件夹中读取图像并将其保存在 powerpoint 中
Posted
技术标签:
【中文标题】有没有办法从文件夹中读取图像并将其保存在 powerpoint 中【英文标题】:Is there a way to read images from a folder and save it in powerpoint 【发布时间】:2013-07-29 12:40:28 【问题描述】:我有大约。 100 张图片,我想阅读这些图片,调整大小并使用 matlab 将其保存在 power point 中,是否可以将这些图像保存在 power point 中,并为每张幻灯片提供标题。 我正在使用此代码阅读图像:
for i = 1:numel(pngfiles)
imi = imread(pngfilesi);
imrgbi = rgb2gray(imi);
imrgb_zi = imrgbi(160:350,280:450);
end
【问题讨论】:
我不相信 MATLAB 与 PowerPoint 直接集成,但您绝对可以编写 C# 或 C++ 代码,MATLAB 可以调用它,然后将其添加到 PowerPoint。不过到那时,您不妨在 C# 或 C++ 中进行所有调整大小 【参考方案1】:在我看来,最好的方法是在 Powerpoint 中使用 VBA 脚本,而不是从 Matlab 操作 ppt。步骤将是
-
在文件夹中创建图像列表 - 使用合理的命名方案
打开PowerPoint;转到 VBA 编辑器 (Alt-F11) 并添加一个包含以下代码行的模块(注意 - 这直接取自 https://***.com/a/5038907/1967396 并进行了最少的编辑):
-
Sub CreatePictureSlideshow( )
Dim presentation
Dim layout
Dim slide
Dim FSO
Dim folder
Dim file
Dim folderName
Dim fileType
' Set this to point at the folder you wish to import JPGs from
' Note: make sure this ends with a backslash \
fileType = ".jpg" ' <<< change this to the type you want
folderName = "c:\somedirectory\" ' <<< change this to the directory you want
' setup variables
Set presentation = Application.ActivePresentation
' choose the layout you want: e.g. if the title needs a particular format
Set layout = Application.ActivePresentation.SlideMaster.CustomLayouts(1)
Set FSO = CreateObject("Scripting.FileSystemObject")
' Retrieve the folder's file listing and process each file
Set folder = FSO.GetFolder(folderName)
For Each file In folder.Files
' Filter to only process JPG images
If LCase(Right(file.Name), 4)) = fileType Then
' Create the new slide and delete any pre-existing contents
Set slide = presentation.Slides.AddSlide(presentation.Slides.count + 1, layout)
While slide.Shapes.count > 0
slide.Shapes(1).Delete ' <<< You might not want to do this is you want to keep the title placeholder
Wend
' Add the picture
slide.Shapes.AddPicture folderName + file.Name, False, True, 10, 10
' Optional: create a textbox with the filename on the slide for reference
' alternatively, add text to the title shape
Dim textBox
Set textBox = slide.Shapes.AddTextbox(msoTextOrientationHorizontal, 10, 10, 200, 200)
textBox.TextFrame.TextRange.Text = file.Name ' <<< or whatever "title" you wanted
End If
Next
End Sub
您可以进一步修改它以获得所需格式的标题等。
【讨论】:
非常感谢,很有帮助 在我看来,只使用matlab要容易得多,因为你不需要调用另一个脚本、宏等。好吧,至少如果你知道matlab的基础知识的话。你仍然得到 +1,因为使用了 MS-Office 的“本地”语言,这并不会使事情复杂化 :) @LuciusDomitiusAhenobarbus 感谢您的评论。注意 - 我在混合平台环境中工作,COM 方法仅适用于 Windows。对我来说——Linux 上的 Matlab,Mac 上的 PPT——使用 VBA 是最明智的选择...【参考方案2】:你可以试试这个:
Is there an example of using MATLAB to create PowerPoint slides?
例如:
% before the following, you have to create the ppt as explained, see link above!
% I prefer using some name instead of i or j
for img_ind = 1:numel(pngfiles)
% this depends on the ppt-version (see link above)-> here for 2007 and higher
mySlide = Presentation.Slides.Add(1,'ppLayoutBlank')
% Note: Change the image file full path names to where you save them
Image1 = mySlide.Shapes.AddPicture('<full path>\name_of_image(img_ind).png','msoFalse','msoTrue',100,20,500,500)
end
% then you have to save it, see link above!
在您的情况下,我想您必须先保存图像,如示例所示:
print('-dpng','-r150','<full path>\test1.png')
编辑
这仅在 Windows 上使用 Matlab 时有效,因为需要 COM。请参阅 Floris 上的 cmets 答案!
【讨论】:
嗨,卢修斯,谢谢,我看到了那个例子,但是我有大约 100 张图像,我不能单独添加,我想循环播放。它可行吗?我对此有点陌生。 谢谢,但我无法让它工作,图像在数组“imi”中,print('-dpng','-r150','testi. png');blankSlide = Presentation.SlideMaster.CustomLayouts.Item(i);Slide(i)= presentation.Slides.AddSlide(i,blankSlide); Imagei = Slide(i).Shapes.AddPicture('C:\Users\Ankit Gupta\Desktop\Rotatation\imi.png','msoFalse','msoTrue',100,20,500,500) 结束演示。 SaveAs('C:\Users\Ankit Gupta\Desktop\Rotatation\ExamplePresentation.ppt') error "Error using Interface.91493475_5A91_11CF_8700_00AA0060263B/AddPicture Invoke Error, Dispatch Exception:Description: The specified file was not found." 好吧,你必须使用一个字符串,如果你的路径相同并且 imi 是名称(没有扩展名)你可以像这样使用它: Imagei = Slide( i).Shapes.AddPicture(['C:\Users\Ankit Gupta\Desktop\Rotatation\'imi '.png'],'msoFalse','msoTrue',100,20,500,500); 非常感谢,我试试看【参考方案3】:参加这个聚会迟到了:这是“本周的 Matlab 精选”工具:
http://www.mathworks.com/matlabcentral/fileexchange/30124-smart-powerpoint-exporter
请注意该页面上的一些 cmets,因为该工具显然已经有几年没有更新了。
【讨论】:
以上是关于有没有办法从文件夹中读取图像并将其保存在 powerpoint 中的主要内容,如果未能解决你的问题,请参考以下文章
在 php 中将 XML 文档转换为数组时,有没有办法将其转换回来并将其保存为属性为元素的 XML 文件?