¿Cómo saber qué fotos se hicieron con mi iPhone y cuáles se enviaron a través de WhatsApp?

3

Después de unas buenas vacaciones, a menudo tomé alrededor de 200 fotos y el 80% lo hice yo mismo, el 10% fueron fotos entrantes de WhatsApp y el 10% otras imágenes que terminaron en mi iPhone.

Ni siquiera quiero que las imágenes de WhatsApp sean copiadas automáticamente por Carousel en mi iPhone 6, pero desafortunadamente no hay manera de desactivar eso.

¿Hay una forma fácil desde mi MacBook para filtrar las imágenes que hice de las otras imágenes?

  • Buenaimagen: enlace
  • Imagen de WhatsApp: enlace
pregunta ujjain 29.07.2015 - 17:45

1 respuesta

4

Esto hace uso de la información de Exif almacenada en el archivo de imagen JPEG, algunas de las cuales están indexadas por Spotlight, sin embargo consulte la sección Notas: a continuación.

Aquí hay un sencillo ejemplo de script bash para realizar una acción en cualquier archivo de imagen JPEG que se encuentre en el directorio de trabajo que se realizó en un iPhone.

Copie y pegue el siguiente código en un archivo de texto del plan, sin extensión, y desde una Terminal, hágalo ejecutable usando chmod +x filename donde " filename " es el nombre que le dio al script expediente. Luego colóquelo en un directorio que esté en su $PATH , por ejemplo, /usr/local/bin , de lo contrario tendrá que proporcionar la ruta de acceso completa al archivo de script en la línea de comando para ejecutarlo.

Ahora, en una Terminal, use el comando cd para cambiar al directorio de destino que contiene los archivos de imagen JPEG sobre los que desea actuar, esto se convierte en el directorio de trabajo y escriba el nombre que le dio a la secuencia de comandos y presione Entrar. Se hará eco del nombre de cada archivo de imagen JPEG que se tomó en un iPhone.

  • Sugerencia: para navegar más fácilmente al directorio de trabajo de destino desde dentro de la Terminal, escriba cd seguido de un espacio y luego arrastre y suelte la carpeta de destino desde el Finder hasta la ventana de la Terminal. Esto rellena el nombre de ruta completo por usted y luego puede presionar Intro. Ahora se encuentra en el directorio de trabajo que contiene los archivos de imagen JPEG.

Código:

#!/bin/bash

for f in *.jpg *.JPG; do
    x="$(mdls "$f" | grep -o 'iPhone')"
    if [[ ! -z "$x" ]]; then
        echo "$f was taken on an iPhone."
    fi
done

Ahora, obviamente, querrá hacer otra cosa que no sea más que repetir el nombre de un archivo de imagen JPEG que se tomó en un iPhone, por lo que tendrá que agregar comandos adicionales dentro del bucle for ... done .

En este ejemplo, quiero que todos los archivos de imágenes JPEG que se tomaron en un iPhone se muevan a un nombre de directorio "iPhone" dentro del directorio de trabajo . Así que modifiqué el script en consecuencia.

Código editado:

#!/bin/bash

if [[ ! -d "iPhone" ]]; then
    mkdir "iPhone"
fi

for f in *.jpg *.JPG; do
    x="$(mdls "$f" | grep -o 'iPhone')"
    if [[ ! -z "$x" ]]; then
        echo "$f was taken on an iPhone."
        mv -v "$f" "./iPhone/"
    fi
done

En resumen:

En el primer if ... fi el bloque [[ ! -d "iPhone" ]] prueba la existencia del directorio "iPhone" dentro del directorio de trabajo actual y, si no existe, es creado por el mkdir comando.

En el bucle for ... done solo mira los archivos con las extensiones .jpg y .JPG . ( Tengo ambos en mi sistema. )

La variable $x estará vacía y no contendrá nada "" o "iPhone" al completar los comandos dentro de la sustitución del comando "$(...)" .

La salida del comando mdls para el archivo de imagen JPEG se canaliza | al comando grep buscando iPhone y debido a la opción -o será una cadena vacía o la palabra "iPhone" que se devuelve, que se convierte en el contenido de la variable $x .

Por lo tanto, en la segunda prueba if ... fi el bloque [[ ! -z "$x" ]] comprueba que la variable "$x" no es una cadena vacía y cuando contiene algo, en este caso como "iPhone", actuará sobre esa% co_de Archivo% o .jpg . En el caso de que .JPG no sea una cadena vacía, ya que solo puede contener nada o "iPhone", mueve ese archivo al directorio "iPhone" dentro del directorio de trabajo .

Notas :

Después de haber probado esto en varios lugares, tanto en medios de almacenamiento internos como externos, noté que en algunos lugares los archivos se almacenaban y que si bien contenían el modelo de la cámara que los creó, no obstante, no se reflejó en la salida de el comando $x ya que esas ubicaciones fueron excluidas de la indexación por Spotlight. Entonces, usando el comando mdls asegurado por terceros, lea la información directamente desde el propio archivo y no confíe en la información indexada (o en la falta de información indexada) a la que accede el comando exiftool .

Entonces, si desea descargar e instalar ExifTool y usarlo, entonces cambie mdls a mdls en la línea exiftool de la secuencia de comandos para que se vea como x="$(mdls "$f" | grep -o 'iPhone')" .

En comparación con el mismo archivo de imagen JPEG, el comando x="$(exiftool "$f" | grep -o 'iPhone')" mostró los valores de 23 Etiquetas adicionales que no se mostraron con el comando exiftool . Esto puede proporcionar información adicional para tomar la decisión de cómo diferenciar de manera absoluta la fuente de los archivos agregando código adicional al script que usaría la información en las Etiquetas adicionales, si es necesario.

    
respondido por el user3439894 29.07.2015 - 22:29

Lea otras preguntas en las etiquetas