如何将照片添加到 OSX 的 iPhone 模拟器? [复制]

Posted

技术标签:

【中文标题】如何将照片添加到 OSX 的 iPhone 模拟器? [复制]【英文标题】:How do I add photos to the iPhone Simulator for OSX? [duplicate] 【发布时间】:2010-11-18 00:33:43 【问题描述】:

我的 Mac 上有照片,我想将它们添加到 iPhone 模拟器中以测试我的应用程序。

换句话说:如何将照片添加到 iPhone 模拟器?

编辑:iphone Simulator 4.0 怎么样? iphone Simulator 3.0 和 4.0 的工作方式不同。

提前感谢您帮助我...

【问题讨论】:

答案适用于 ios7,它是重复但不是公认的答案:***.com/a/19845346/317461 【参考方案1】:

在 Mac 中打开存储图像的窗口。

打开你的模拟器。

现在将您的图像从 mac 窗口拖到模拟器,

模拟器将打开 safari,并在 safari 选项卡中显示您的图像。

在模拟器中点击并按下图像,

会有提示“保存图片”,

保存图片。

它将被添加到您的 iPhone 模拟器中。

编辑:

首先看下图。

在 iPhone 模拟器 4.0 ( iphone/iphone 模拟器 ) 中,它本身维护一个用于添加图像的 sqlite 数据库。所以,如果你想要复制粘贴系统 - 首先插入条目然后复制粘贴。那太可笑了。

好的。让我解释一下更简单的方法。

打开您想要在模拟器中添加批量图像的查找器。 将第一张图片拖放到 iPhone 模拟器中 在图片上 - 点击并按住 1 秒钟。 将出现操作表 - 点击保存选项 对所有图像重复相同的过程 这也将执行 sqlite 条目。 现在,打开 /Users/YourUserName/Library/Application Support/iPhone Simulator/4.0 备份媒体目录。 (例如复制并粘贴到桌面) 重置 iPhone 模拟器后,所有图像都将消失 您无需重复所有过程,您已备份。 只需从备份复制粘贴到 4.0

【讨论】:

仍然适用于 iPhone Simulator 6.1!【参考方案2】:

对于一些图像:

将图像文件添加到文件夹-> 将文件夹添加到 xcode 项目->

(这将使该项目的所有内容保持在一起,您可以自行决定从项目中删除文件夹)

在同一窗口中打开 xcode 和模拟器-> 在模拟器中打开“照片应用”-> 从xcode拖放到模拟器->

(图片将在 Safari 中打开)

在模拟器中单击并按住图像-> 选择保存->

图像现在将位于模拟器的“照片应用”相册中。这对我来说是最快和最干净的方式。

【讨论】:

【参考方案3】:

我一直在使用我最初在 iPhone Dev SDK 中发现的一种自动化技术。在您的应用资源中包含图片,然后:

UIImage *image = [UIImage imageWithName:@"imageName.jpg"];
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

http://www.iphonedevsdk.com/forum/iphone-sdk-development/2225-no-photos-in-iphone-simulator-how-to-add-photos.html

【讨论】:

【参考方案4】:

我一直在更新脚本以尝试向 SqlLite 数据库添加足够的数据。一旦您从 Safari 保存照片,就会输入以下数据:

sqlite> select * from Photo;
primaryKey|type|title|captureTime|width|height|userRating|flagged|thumbnailIndex|orientation|directory|filename|duration|recordModDate
43|0|IMG_0037|320336214.0|640|427|0|0|0|1|DCIM/100APPLE|IMG_0037.JPG|0.0|320336214.933387
sqlite> select * from PhotoExtras;
primaryKey|foreignKey|identifier|sequence|value
142|43|1|-1|DCIM/100APPLE
143|43|2|-1|IMG_0037.JPG
144|43|3|-1|76616
145|43|6|-1|
        streamtyped???@???NSMutableDictionary
146|43|7|-1|286
147|43|8|-1|
        streamtyped???@???NSValue
148|43|9|-1|8252
149|43|10|-1|1
150|43|13|-1|0

尽管我目前假设 captureTime 不相关,但 Photo 表数据似乎很简单。 PhotoExtras 的东西有点复杂,而且似乎很有必要,因为我当前的脚本(需要图像魔术识别命令)不起作用。

标识符 1 是目录名 标识符 2 是 jpg 名称 标识符 3 是以字节为单位的文件大小

如果有人可以帮助其他人..

目前的脚本如下:

#!/bin/bash

rootPath="$HOME/Library/Application Support/iPhone Simulator/4.2/Media"
relPath="100APPLE"
simPath="$rootPath/DCIM/$relPath"
sqlDB="$rootPath/PhotoData/Photos.sqlite"

if [ -z "$1" ]; then
  echo usage: $0 "<folder>"
  exit 1
fi

if [ ! -d "$simPath" ]; then
  mkdir -p "$simPath"
fi

echo "Finding pictures..."
# Find out which incremential number we're at currently.
index=1
for i in `ls $1/*.JPG,jpg,png,gif,bmp 2>/dev/null`; do
  echo "considering $i..."
  while [ -f "$simPath/`printf IMG_%04d.JPG $index`" ]; do
    let index=$index+1
  done

  imgName=`printf IMG_%04d $index`
  jpgName=`printf IMG_%04d.JPG $index`
  thmName=`printf IMG_%04d.THM $index`
  jpgWidth=`identify -format %w $i`
  jpgHeight=`identify -format %h $i`

  echo $i "->" $simPath/$jpgName
  jpgSize=`stat -f %z $i`
  jpgDir="DCIM/100APPLE"

  sips -s format jpeg $i --out "$simPath/$jpgName" > /dev/null 2> /dev/null || continue

  sqlite3 "$sqlDB" "insert into Photo (title,width,height,directory,filename) values ('$imgName',$jpgWidth,$jpgHeight,'$jpgDir','$jpgName')"
  foreignKey=`sqlite3 "$sqlDB" "select primaryKey from Photo where title='$imgName'"`
  sqlite3 "$sqlDB" "insert into PhotoExtras (foreignKey,identifier,value) values ($foreignKey,1,'$jpgDir'); \
                    insert into PhotoExtras (foreignKey,identifier,value) values ($foreignKey,2,'$jpgName'); \
                    insert into PhotoExtras (foreignKey,identifier,value) values ($foreignKey,3,$jpgSize);"
  let index=$index+1
done

如果我更进一步,我将进行编辑,下一阶段是确定各种 .ithmb 文件包含的内容。希望有一些 jpg 缩略图。

【讨论】:

【参考方案5】:

我已经编辑了脚本以创建一个适用于 iPhone 4.0.1 模拟器的结构。在我的系统上,我有 iphone 模拟器 3.2、4.0 和 4.0.1 的子文件夹。所以我保留了脚本的原始输出并修改了结构,因为它需要为缩略图创建一个 PhotoData 文件夹。运行脚本后,我为 3.2 4.0 和 4.0.1 模拟器目录创建符号链接,如下所示:

ln -s $HOME/Library/Application\ Support/iPhone\ Simulator/User/Media/DCIM/ $HOME/Library/Application\ Support/iPhone\ Simulator/4.0.1/Media/DCIM
ln -s $HOME/Library/Application\ Support/iPhone\ Simulator/User/Media/PhotoData/ $HOME/Library/Application\ Support/iPhone\ Simulator/4.0.1/Media/PhotoData

脚本的未来运行将更新所有模拟器。这是修改后的脚本:

#!/bin/bash

rootPath="$HOME/Library/Application Support/iPhone Simulator/User/Media"
relPath="100APPLE"
simPath="$rootPath/DCIM/$relPath"
thmPath="$rootPath/PhotoData/$relPath"

if [ -z "$1" ]; then
  echo usage: $0 "<folder>"
  exit 1
fi

if [ ! -d "$simPath" ]; then
  mkdir -p "$simPath"
  mkdir -p "$thmPath"
fi

echo "Finding pictures..."
# Find out which incremential number we're at currently.
index=1
for i in `ls $1/*.JPG,jpg,png,gif,bmp 2>/dev/null`; do
  echo "considering $i..."
  while [ -f "$simPath/`printf IMG_%04d.JPG $index`" ]; do
    let index=$index+1
  done

  jpgName=`printf IMG_%04d.JPG $index`
  thmName=`printf IMG_%04d.THM $index`

  echo $i "->" $simPath/$jpgName
  echo $i "->" $thmPath/$thmName

  sips -s format jpeg $i --out "$simPath/$jpgName" > /dev/null 2> /dev/null || continue
  sips -s format jpeg -z 96 96 $i --out "$thmPath/$thmName" > /dev/null 2> /dev/null || continue

  let index=$index+1
done

【讨论】:

【参考方案6】:

三个简单的步骤

1) 将图像拖放到模拟器上 - 这将打开一个带有您的图像的浏览器 2) 点击并按住图片 - 这将打开选项 3) 保存图片 - 这会将图像复制到模拟器上Watch YouTube Video ( add images to iphone simulator)

【讨论】:

【参考方案7】:

我最近也有同样的问题。如果您一次只做一张,那么在 Safari 上放置照片就足够了。对于多张图像,我找到了一个很棒的blog post,它解释了模拟器在哪里找到它的图像。

相同的海报链接到bash script 以将图像目录加载到模拟器中。我现在使用它来将我的模拟器的环境重置为已知的良好状态,作为我构建的一部分。这样,我可以将图像与代码保存在一起,而不是依赖于模拟器目录树的状态。

编辑 原始脚​​本位于似乎已不存在的服务器上。我在此处粘贴了 iPhone SDK 3.0 所需的更改。剧本的功劳归于“Of Code and Men”的作者。

#!/bin/bash
simPath="$HOME/Library/Application Support/iPhone Simulator/User/Media/DCIM/100APPLE"
thmPath="$simPath/.MISC"

if [ -z "$1" ]; then
  echo usage: $0 "<folder>"
  exit 1
fi

if [ ! -d "$simPath" ]; then
  mkdir -p "$simPath"
  mkdir -p "$thmPath"
fi

# Find out which incremential number we're at currently.
index=1
for i in `ls $1/*.jpg,png,gif,bmp 2>/dev/null`; do
  while [ -f "$simPath/`printf IMG_%04d.JPG $index`" ]; do
    let index=$index+1
  done

  jpgName=`printf IMG_%04d.JPG $index`
  thmName=`printf IMG_%04d.THM $index`

  echo $i "->" $simPath/$jpgName

  sips -s format jpeg $i --out "$simPath/$jpgName" > /dev/null 2> /dev/null || continue
  sips -s format jpeg -z 96 96 $i --out "$thmPath/$thmName" > /dev/null 2> /dev/null || continue

  let index=$index+1
done

【讨论】:

提供的代码有一个主要问题.. 带有空格的文件将无法正确处理。将 for 循环更改为:for i in "$@"; do 并使用 find ./photos -name "*.jpg" -exec ./load-photos.sh + 运行它,您的图像在 photos 中,上面的脚本保存为 load-photos。嘘 或者,将整个 for i in ... 行更改为:find "$1" -iname "*\.jpg" 2&gt;/dev/null | while read i; do,脚本将按照宣传的方式运行。 iPhone 模拟器 4.0 怎么样?我已经编辑了我的问题和答案。请检查一下,如果有任何 cmets,请告诉我。 根据this answer,使用xcrun simctl addphoto可能更方便。【参考方案8】:

sagar 答案的更易于理解的版本:

打开一个 Finder 窗口来存储您的图像和 iPhone 模拟器。然后将图像从 Finder 窗口拖到模拟器中。模拟器将使用您的图像打开 Safari。单击并按住以将图像保存到 iPhone 相机胶卷。您现在可以像往常一样使用这些图像了。

【讨论】:

以上是关于如何将照片添加到 OSX 的 iPhone 模拟器? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将一些照片添加到模拟器照片库?

将图像添加到 iPhone 模拟器相册 - 接受的“技巧”不起作用

如何让任何 ionic2 项目在任何 iPhone 模拟器上运行? (来自 osX El Capitan)

无法将图像添加到 iOS 模拟器

iphone - 如何将视频添加到 iPad 模拟器?

如何从 iphone 照片库中获取照片总数。?