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

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

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

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

提前感谢您帮助我...

【问题讨论】:

标签: iphone


【解决方案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 相机胶卷。您现在可以像往常一样使用这些图像了。

            【讨论】:

              猜你喜欢
              • 2011-05-12
              • 2011-07-07
              • 2017-12-14
              • 2021-11-27
              • 1970-01-01
              • 2023-04-02
              • 1970-01-01
              • 1970-01-01
              • 2011-02-04
              相关资源
              最近更新 更多