如何将照片添加到OSX的iPhone模拟器?

时间:2009-08-09 00:00:01

标签: iphone

我的Mac上有照片,我想添加到iPhone模拟器来测试我的应用程序。

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

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

先谢谢你帮助我......

8 个答案:

答案 0 :(得分:87)

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

打开另一侧的模拟器。

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

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

Tap&在模拟器中按下图像,

会有“保存图片”的消息,

保存图片。

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

修改:

首先看看下面的图片。

alt text

在iPhone模拟器4.0(iphone / iphone模拟器)中,它本身维护一个sqlite数据库以添加图像。所以,如果你想复制粘贴系统 - 首先制作插入条目&然后复制粘贴。那将是荒谬的。

确定。让我解释更简单的方法。

  • 打开您要在模拟器中添加批量图像的查找程序。
  • 阻力&将第一张图像放入iphone模拟器
  • on image - tap&等一下。
  • 将显示操作表 - 点击保存选项
  • 对所有图片重复相同的过程
  • 这也会做sqlite条目。
  • 现在,打开/ Users / YourUserName / Library / Application Support / iPhone Simulator / 4.0
  • 备份Media目录。 (例如将其复制并粘贴在桌面上)
  • 重置iphone模拟器时,所有图像都将消失
  • 你不需要再重复所有的过程,你已经备份了它。
  • 只是复制&从背面粘贴到4.0

alt text

答案 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)

对于一些图片:

  • 将图像文件添加到文件夹 - &gt;
  • 将文件夹添加到xcode项目 - &gt;

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

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

(图片将在野生动物园中打开)

  • 点击并按住模拟器中的图像 - &gt;
  • 选择了save-&gt;

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

答案 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);

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