2009-08-09 18 views
41

Tengo fotos en mi Mac que me gustaría agregar al simulador de iPhone para probar mi aplicación.¿Cómo agrego fotos al simulador de iPhone para OSX?

En otras palabras: ¿cómo agrego fotos al simulador de iPhone?

Editar: ¿Qué hay de iphone Simulator 4.0? iphone simulator 3.0 & 4.0 ambos funcionan de manera diferente.

Gracias de antemano por ayudarme ...

+1

respuesta trabaja para iOS7, que es el duplicado pero no la respuesta aceptada: http://stackoverflow.com/a/19845346/317461 –

Respuesta

82

abrir la ventana en el mac, donde se almacenan las imágenes.

Abra su simulador en otro lado.

Ahora arrastre la imagen desde la ventana de Mac a simulador,

simulador se abrirá Safari, y en una pestaña Safari se mostrará su imagen.

Tap & presione hacia abajo en la imagen en el simulador,

Habrá mensaje a "registrar la imagen",

guardar la imagen.

Se agregará a su simulador de iPhone.

Editar:

Primera basta con ver siguiente imagen.

alt text

En iPhone simulador de 4.0 (/ simulador de iPhone iPhone), sí que mantiene una base de datos SQLite para las imágenes agregadas. Por lo tanto, si desea copiar el sistema de pegar, primero haga las entradas de inserción & y luego copie y pegue. Eso sería una manera ridícula.

Ok. Déjame explicarte una forma más simple de hacerlo.

  • abra el buscador en el que tiene imágenes a granel que desea agregar en el simulador.
  • arrastre & gota primera imagen en simulador de iPhone
  • en la imagen - toque & durante 1 segundo.
  • Hoja de acción aparecerá - pulse sobre la opción Guardar
  • repita mismo proceso para todas las imágenes
  • esto va a hacer entradas sqlite también.
  • ahora, abra el/Users/YourUserName/Library/Application Support/iPhone Simulator/4.0
  • haga una copia de seguridad del directorio de medios. (Por ejemplo, copiarlo & pegarlo en el escritorio)
  • cuando se restablece el simulador de iPhone, todas las imágenes se habrá ido
  • que no es necesario repetir todo el proceso de nuevo, usted tiene una copia de seguridad de la misma.
  • solo copie & pegue desde la copia de seguridad hasta 4.0

alt text

+0

Aún funciona para iPhone Simulator 6.1! – valdyr

16

Una más fácil de entender versión de la respuesta de Sagar:

Abrir una ventana del Finder a la que se almacenan las imágenes y el simulador de iPhone. A continuación, arrastre las imágenes desde la ventana del Finder al simulador. El simulador abrirá Safari con tu imagen. Haga clic y mantenga presionado para guardar la imagen en el rollo de la cámara del iPhone. Ahora puede usar esas imágenes como lo haría normalmente.

10

Hace poco tuve la misma pregunta. El enfoque de dejar caer la foto en Safari funciona bastante bien si estás haciendo uno a la vez. Para varias imágenes a la vez, encontré una gran blog post que explica dónde el simulador encuentra sus imágenes.

El mismo póster enlaza a bash script para cargar un directorio de imágenes en el simulador. Ahora uso esto para restablecer el entorno de mi simulador a un buen estado conocido como parte de mi compilación. De esta forma, puedo mantener mis imágenes junto con mi código en lugar de depender del estado del árbol de directorios del simulador.

EDIT El script original estaba en un servidor que parece haberse ido. Lo he pegado aquí con el cambio necesario para iPhone SDK 3.0. El crédito para el guión corresponde al autor de "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 
+1

el código provisto tiene un problema importante ... los archivos con espacios no se manejarán correctamente. Cambie el _for_ loop a: 'for i in" $ @ "; do' Y ejecútelo usando 'find ./photos -name" * .jpg "-exec ./load-photos.sh {} +' donde sus imágenes están en _photos_ y la secuencia de comandos anterior se guarda como _load-photos. sh_ – ohhorob

+1

Alternativamente, cambie toda la línea 'for i in ...' en: 'find" $ 1 "-iname" * \. jpg "2>/dev/null | mientras lees i; do' y el script funcionará como se anuncia. – Pascal

+0

¿Qué hay de iPhone simulator 4.0? He editado mi pregunta y respuesta. Por favor, échale un vistazo y avísanos si hay algún comentario. –

1

He editado el script para crear una estructura que funcione con el simulador de iPhone 4.0.1. En mi sistema tengo subcarpetas para iPhone simulator 3.2, 4.0 y 4.0.1. Así que guardé el resultado original del guión y modifiqué la estructura a medida que necesitaba crear una carpeta PhotoData para las miniaturas. Después de ejecutar la secuencia de comandos se crea enlaces sym para los 3.2 y 4.0 4.0.1 directorios simulador de la siguiente manera:

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 

futuras ejecuciones del guión actualizar todos los simuladores. Aquí está el script modificado:

#!/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 
1

He estado actualizando el script para tratar de agregar suficientes datos a las bases de datos SqlLite. Tan pronto como se guarda una foto de Safari se introduce los siguientes datos: mesa

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| 
     [email protected]???NSMutableDictionary 
146|43|7|-1|286 
147|43|8|-1| 
     [email protected]???NSValue 
148|43|9|-1|8252 
149|43|10|-1|1 
150|43|13|-1|0 

La Foto de datos parece bastante simple, aunque actualmente estoy asumiendo captureTime no es relevante. El material de PhotoExtras es un poco más complicado y parece necesario ya que mi script actual, que necesita comandos de magia para identificar imágenes, no funciona.

identificador 1 es el nombre del directorio identificador 2 es el nombre jpg identificador 3 es el tamaño del archivo en bytes

Si alguien puede ayudar con los otros ..

La secuencia de comandos en su forma actual es el siguiente:

#!/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 

Voy a editar si llego más lejos, la siguiente etapa es identificar lo que contienen los diversos archivos .ithmb. Esperemos que algún tipo de pila de miniaturas de jpg.

8

Para algunas imágenes:

  • archivos de imagen Agregar a carpeta->
  • Añadir carpeta a Xcode Proyecto->

(esto va a mantener todo junto para este proyecto y la carpeta puede ser eliminado del proyecto a su discreción)

  • abra xcode y simulador en sam e ventana->
  • abiertos "aplicación de fotos" en Simulador>
  • arrastrar y soltar desde Xcode a Simulador>

(imagen (s) se abrirá en Safari)

  • clic y mantener la imagen en el Simulador>
  • eligió Guardar->

Las imágenes estarán ahora en el álbum de "aplicaciones de fotos" en el simulador. Esta fue la forma más rápida y limpia para mí.

Cuestiones relacionadas