如何将照片添加到 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>/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 模拟器相册 - 接受的“技巧”不起作用