在iPhone模拟器中添加图片或视频

312

我试图使用UIImagePickerControllerUIImagePickerControllerSourceTypePhotoLibrary,但它显示“没有照片”。模拟器从哪里获取图片?我应该将图片复制到哪里,以便它们在模拟器中显示?


57
将图像拖到iPhone模拟器中,然后右键单击图像保存。 - Fattie
3
用当前的模拟器无法右键点击它,但我可以点击“分享”图标然后保存图片。 - Scott Rowley
Scott Rowley的回答对我有用,而Joe Blow的则没有。我认为这可能是Xcode 5.1.1版本的差异。 - erstaples
35个回答

455

讲解Airsource有关在模拟器中添加图像的步骤:

  1. 将图像拖放到模拟器中,Safari将会打开(或使用Safari浏览器从互联网中浏览图像)
  2. 点击并长按住该图像
  3. 当弹出窗口出现时,选择保存图像并享受它 ;)

更新:对于iOS Simulator 4.2,请执行这些步骤两次才能正常工作。感谢kevboh

更新:这个方法也适用于iOS Simulator 6.1


1
这在我的 iOS 模拟器版本 4.2 (235) 上不起作用。我可以正常完成步骤 1-3,但当我进入“照片”时,什么也看不到。 - Mark Fowler
2
当我没有打开其他应用程序时,这对我起作用了。当我有一个应用程序打开时,它经过了相同的步骤,但实际上并没有起作用。 - Tristan Warner-Smith
1
哇,这太容易了,感觉像是作弊!顺便提一下,正如@KarenAnne所指出的那样,在iOS 6.0模拟器中可以使用此方法,照片最终会出现在~/Library/Application Support/iPhone Simulator/6.0/Media/DCIM/100APPLE目录下,而且(似乎)没有.THM文件。无论如何,这是个好技巧! - Dave Marley
这应该是被接受的答案。别再纠结于文件系统了。 - Claudiu
仍然在iOS 17上运行正常 :-) - undefined
显示剩余6条评论

284
最简单的将图片、视频等内容传输到模拟器上的方法是从电脑上将它们拖放到模拟器中。这会使模拟器打开照片应用程序并开始填充库。
如果需要一个可脚本化的方法,请继续阅读。
注意 - 虽然此方法有效,但是我认为下面Koen的解决方案现在更好,因为它不需要重新启动模拟器。
通过前往xCode->Devices,选择您的模拟器并检查标识符值来确定您的模拟器。或者您可以确保模拟器正在运行并运行以下命令以获取设备ID xcrun simctl list | grep Booted 前往
~/Library/Developer/CoreSimulator/Devices/[模拟器标识符]/data/Media/DCIM/100APPLE
并添加IMG_nnnn.THM和IMG_nnnn.JPG。然后,您需要重置模拟器(Hardware->Reboot)以使其注意到新的更改。它们不一定是JPEG格式-它们都可以是PNG格式,但是似乎必须同时存在才能正常工作。如果DCIM不存在,则可能需要创建它,在这种情况下,您应该从0001开始。JPG文件是全尺寸版本,而THM文件是缩略图,大小为75x75像素。我编写了一个脚本来执行此操作,但这里有一个更好的文档链接不再有效 您还可以通过在模拟器上点击并按住图片来从Safari中添加照片。如果您将图像(或任何其他文件,如PDF)拖到模拟器中,它将立即打开Safari并显示图像,因此这是一种相当简单的方法将图像传输到模拟器中。

3
我的位置在 ~/Library/Application Support/iPhone Simulator/3.1.3/Media/DCIM/100APPLE - gak
3
对于使用5.1模拟器的我来说,不需要.THM文件,目录需要是~/Library/Application Support/iPhone Simulator/5.1/Media/DCIM/100APPLE。答案中提供的脚本链接对我来说已经无法使用,因此我自己写了一个脚本,链接在这里:https://gist.github.com/3738695 - Dav Yaginuma
11
很遗憾,使用iOS6后,这种技术已经不再有效。然而,在模拟器中运行的这个小型导入应用程序还可以正常工作 - http://aptogo.co.uk/2010/09/importing-photos/ 请参阅以下评分较低的答案。 - Kenny Grant
很遗憾,答案需要更改路径才能继续工作,正确的做法是编辑现有答案以修改路径。你的答案是完全不同的方法,只有在你讨厌命令行时才更简单。 - Airsource Ltd
你需要重新启动模拟器。因为这里不是指“模拟器 > 重置内容和设置”。 - Raphael
显示剩余10条评论

131

不适用于视频。因为长按屏幕时没有任何反应。 - Bagusflyer

64

iOS 8.0 加入了将图片拖放至 iOS 模拟器的功能。您可以将一些图像拖放到窗口中,它们将被导入到模拟设备的照片库中。您也可以使用 simctl 命令行工具来完成此操作。'xcrun simctl addphoto '


2
谢谢!很棒的功能。请注意,您不能将它们拖到Dock图标上,您必须将它们拖到模拟器窗口中。希望很快能够更改以允许拖动到图标。 - Jordan H
拖动到 Dock 图标应将应用程序窗口带到前台(就像您拖动到 Finder dock 图标一样)。 - Jeremy Huddleston Sequoia
1
正确。它只能用于添加照片,不能用于视频。我不知道如何回溯事件,但可能可以通过照片应用程序实现。如果不行,一定值得在http://bugreport.apple.com上提交一个雷达报告。 - Jeremy Huddleston Sequoia
@JeremyHuddlestonSequoia,它不会保留资产的原始元数据。请查看我的项目,它可以帮助您导入资产并保留所有元数据(包括视频!)https://github.com/matibot/MBAssetsImporter - Mati Bot
@MatiBot 请尝试使用Xcode 7。在导入Xcode 7时,元数据应该得到保留。 - Jeremy Huddleston Sequoia
显示剩余5条评论

53

自从 Xcode 6,你可以使用命令行工具 xcrun simctl

使用非常简单;要将照片添加到当前正在运行的模拟器中,你可以使用 booted 占位符。

xcrun simctl addmedia booted ./MyFile.jpg

要将它添加到其他模拟器中,您需要使用其设备ID,可以通过运行xcrun simctl list来找到。

xcrun simctl addmedia E201E636-CE6C-11E5-AB30-625662870761 ./MyFile.jpg

最后一个命令"xcrun simctl addmedia E201E636-CE6C-11E5-AB30-625662870761 ./MyFile.jpg"似乎只有在模拟器运行时才能正常工作。我希望有一种解决方案,可以在不运行模拟器的情况下添加图像,即在运行模拟器之前进行准备。 - StackUnderflow

27

简单易行,只需按照以下步骤执行:

  1. 将图片拖放到模拟器上
  2. 现在,图片将在Safari浏览器中打开(file://.../ImageName)。点击并长按图片。
  3. 这将显示一个带有保存、取消选项的操作表(在iOS 7模拟器中还有复制选项)。

    操作表截图

  4. 保存图片。图片将被添加到库中。

    照片库


23

我刚刚偶然发现了如何在iOS模拟器上批量上传图片。(我只在6.1上确认过。)

  1. 备份文件夹:

    ~/Library/Application Support/iPhone Simulator/6.1/Media
    
  2. 将所有图像复制到文件夹中:

    ~/Library/Application Support/iPhone Simulator/6.1/Media/DCIM/100APPLE
    
  3. 移动或删除文件夹:

    ~/Library/Application Support/iPhone Simulator/6.1/Media/PhotoData
    
  4. 重新启动iOS模拟器

  5. 打开照片应用程序

模拟器将恢复100APPLE文件夹中的所有图像!


1
优秀的解决方案。我已经将我的照片放在Media/DCIM文件夹中,但我还需要删除PhotoData文件夹。而且,这对于我的iOS 7也适用。 - Swindler
1
在iOS7.0.3 4英寸模拟器下,我尝试了四种方法,只有这一种方法有效,尽管我发现每个图像都有重复。已点赞。 - Ash
1
我能够在iOS7.0下使用这个github项目导入图片https://github.com/basilhe/iOS-Simulator-Photo-Importer。它似乎是之前提到的照片导入工具的变体,但也支持视频。 - Rob
谢谢!我想知道为什么我已经把照片放在Media/DCIM/100APPLE文件夹中,但它们没有显示出来。事实证明,还需要删除Media/PhotoData文件夹这一额外步骤。 - KarenAnne
是的,虽然我得到了重复的图像.. :O - KarenAnne
显示剩余2条评论

21

iOS 7版本中,我进行了以下操作:

将照片复制到以下这两个文件夹中:

~/Library/Application Support/iPhone Simulator/6.1/Media/DCIM/100APPLE
~/Library/Application Support/iPhone Simulator/7.0/Media/DCIM/100APPLE

只删除这4个文件(以避免重新启动时重复):

~/Library/Application Support/iPhone Simulator/6.1/Media/PhotoData/Photos.sqlite-shm
~/Library/Application Support/iPhone Simulator/6.1/Media/PhotoData/Photos.sqlite-wal
~/Library/Application Support/iPhone Simulator/7.0/Media/PhotoData/Photos.sqlite-shm
~/Library/Application Support/iPhone Simulator/7.0/Media/PhotoData/Photos.sqlite-wal

1
删除 *.sqlite- 文件对我有用。谢谢! - Zorayr
太好了,它真的帮助了我。我尝试了几种方法,但到目前为止我一直在使用拖放。但是当你需要复制太多图像时,这是更容易的方法 :) - Anand
5
iOS 8 版本中,你现在可以将照片拖放至模拟器上 :) - VaporwareWolf
与Arel的回答不同,使用这种技术无法使移动到DCIM/100APPLE文件夹中的电影变得可用。 - Steven Fisher

18

只需将图片拖到iPhone模拟器中即可。


17

如果你无法通过拖放方式上传文件,因为你遇到了以下错误:

一个或多个媒体项目导入失败:操作无法完成。(PHPhotosErrorDomain 错误-1。)

将你的文件移到文档文件夹中,然后再将它们拖入模拟器中。这样会触发模拟器询问是否允许访问你的文件。如果它们在下载文件夹中,则不会触发该操作。


谢谢,哈哈,文档文件夹是关键。 - Evan
1
非常感谢!这节省了我很多时间! - Barb
还有,由于某种原因,它对我的~/Desktop文件夹没有起作用...谢谢! - undefined

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