我的Mac上有照片,我想添加到iPhone模拟器来测试我的应用程序。
换句话说:如何将照片添加到iPhone模拟器?
编辑:iphone Simulator 4.0怎么样? iphone Simulator 3.0& 4.0的工作方式不同。
先谢谢你帮助我......
答案 0 :(得分:87)
在Mac中打开存储图像的窗口。
打开另一侧的模拟器。
现在将图像从mac窗口拖动到模拟器,
模拟器将打开safari,在safari选项卡中将显示您的图像。
Tap&在模拟器中按下图像,
会有“保存图片”的消息,
保存图片。
它将被添加到您的iPhone模拟器中。
修改:
首先看看下面的图片。
在iPhone模拟器4.0(iphone / iphone模拟器)中,它本身维护一个sqlite数据库以添加图像。所以,如果你想复制粘贴系统 - 首先制作插入条目&然后复制粘贴。那将是荒谬的。
确定。让我解释更简单的方法。
答案 1 :(得分:16)
一个更容易理解的sagar的答案版本:
打开存储图像的Finder窗口和iPhone模拟器。然后将图像从Finder窗口拖动到模拟器中。模拟器将使用您的图像打开Safari。单击并按住可将图像保存到iPhone相机胶卷。您现在可以像往常一样使用这些图像。
答案 2 :(得分:10)
我最近有同样的问题。如果您一次只进行一次,那么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
答案 3 :(得分:9)
对于一些图片:
(这将使所有项目保持在一起,文件夹可以自行决定从项目中删除)
(图片将在野生动物园中打开)
图片现在将出现在模拟器中的“照片应用”相册中。这对我来说是最快捷,最干净的方式。
答案 4 :(得分:1)
3个简单步骤
1)拖动&amp;将图像拖放到模拟器上
- 这将打开带有您图像的浏览器
2)点击&amp;保持形象
- 这将打开选项
3)保存图像
- 这会将图像复制到模拟器上
Watch YouTube Video ( add images to iphone simulator)
答案 5 :(得分:1)
我编辑了脚本以创建一个适用于iPhone 4.0.1模拟器的结构。在我的系统上,我有iphone模拟器3.2,4.0和4.0.1的子文件夹。所以我保留了脚本的原始输出并修改了结构,因为它需要为缩略图创建一个PhotoData文件夹。运行脚本后,我为3.2 4.0和4.0.1模拟器目录创建sym链接,如下所示:
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)
我一直在更新脚本以尝试向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
Photo表数据看起来很简单,虽然我目前假设captureTime不相关。 PhotoExtras的内容有点复杂,似乎是必要的,因为我的当前脚本需要图像magicks识别命令,不起作用。
标识符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缩略图堆栈。
答案 7 :(得分:0)
我一直在使用我最初在iPhone Dev SDK上找到的自动化技术。将图片包含在您应用的资源中,然后:
UIImage *image = [UIImage imageWithName:@"imageName.jpg"];
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);