Some Exif info lost when upload with android phone #4471

Closed
opened 2026-02-05 10:33:43 +03:00 by OVERLORD · 6 comments
Owner

Originally created by @charlieshen7 on GitHub (Oct 4, 2024).

The bug

The same photo
when I upload it with my andriod phone (app version is 1.117.0), some exif info will lost, such as Make, Model, ModifyDate,Focal Length etc.
but if i upload it with web, exif info will not lost

how can i fix this problem?
the_photo_in_my_phone.zip
the_photo_uploaded_with_android_phone_then_download_in_web.zip

The OS that Immich Server is running on

docker

Version of Immich Server

1.117.0

Version of Immich Mobile App

1.117.0

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

version: "3.8"

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding
      file: hwaccel.transcoding.yml 
      service: vaapi # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    volumes:
      - /mnt/media_rw/5cda1ac3-58fe-4df5-97f6-6eb0aa662c51/.ugreen_nas/214558/1_Pictures/Immich:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
      - /mnt/media_rw/5cda1ac3-58fe-4df5-97f6-6eb0aa662c51/.ugreen_nas/214558/1_Pictures/Archive:/mnt/archive
    env_file:
      - stack.env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false
    networks:
      network:
        ipv4_address: 172.24.0.5


  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
      # file: hwaccel.ml.yml
      # service: openvino # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - /mnt/media_rw/e68d7880-8c05-493e-8b92-b956aebeac0c/.ugreen_nas/214558/Docker/Immich/model-cache:/cache
    env_file:
      - stack.env
    restart: always
    healthcheck:
      disable: false
    networks:
      network:
        ipv4_address: 172.24.0.3

  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e
    restart: always
    healthcheck:
      test: redis-cli ping || exit 1
    networks:
      network:
        ipv4_address: 172.24.0.4

  database:
    container_name: immich_postgres
    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - /mnt/media_rw/e68d7880-8c05-493e-8b92-b956aebeac0c/.ugreen_nas/214558/Docker/Immich/pgdata:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
      interval: 5m
      start_interval: 30s
      start_period: 5m
    command: ["postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"]
    restart: always
    networks:
      network:
        ipv4_address: 172.24.0.6

networks:
  network:
    ipam:
      config:
      - subnet: 172.24.0.0/16
        gateway: 172.24.0.1

Your .env content

DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=H4#Xhgti7%FoCQ
DB_DATABASE_NAME=immich
REDIS_HOSTNAME=immich_redis
UPLOAD_LOCATION=/mnt/media_rw/5cda1ac3-58fe-4df5-97f6-6eb0aa662c51/.ugreen_nas/214558/Pictures/Immich
LOG_LEVEL=log
TYPESENSE_API_KEY=QCkiTy*f*fCNJ6iU7cr3q@bmf67bgtX#uec9B
PUBLIC_LOGIN_PAGE_MESSAGE="My Family Photos and Videos Backup Server"

Reproduction steps

  1. open the_photo_in_my_phone.jpg directly in pc, you can see full exif info
  2. upload it with andriod phone, most exif info lost (you can download it and check the exif info)

Relevant log output

No response

Additional information

No response

Originally created by @charlieshen7 on GitHub (Oct 4, 2024). ### The bug The same photo when I upload it with my andriod phone (app version is 1.117.0), some exif info will lost, such as Make, Model, ModifyDate,Focal Length etc. but if i upload it with web, exif info will not lost how can i fix this problem? [the_photo_in_my_phone.zip](https://github.com/user-attachments/files/17262015/the_photo_in_my_phone.zip) [the_photo_uploaded_with_android_phone_then_download_in_web.zip](https://github.com/user-attachments/files/17262016/the_photo_uploaded_with_android_phone_then_download_in_web.zip) ### The OS that Immich Server is running on docker ### Version of Immich Server 1.117.0 ### Version of Immich Mobile App 1.117.0 ### Platform with the issue - [ ] Server - [ ] Web - [X] Mobile ### Your docker-compose.yml content ```YAML version: "3.8" name: immich services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/hardware-transcoding file: hwaccel.transcoding.yml service: vaapi # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding volumes: - /mnt/media_rw/5cda1ac3-58fe-4df5-97f6-6eb0aa662c51/.ugreen_nas/214558/1_Pictures/Immich:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - /mnt/media_rw/5cda1ac3-58fe-4df5-97f6-6eb0aa662c51/.ugreen_nas/214558/1_Pictures/Archive:/mnt/archive env_file: - stack.env ports: - 2283:3001 depends_on: - redis - database restart: always healthcheck: disable: false networks: network: ipv4_address: 172.24.0.5 immich-machine-learning: container_name: immich_machine_learning # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. # Example tag: ${IMMICH_VERSION:-release}-cuda image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration # file: hwaccel.ml.yml # service: openvino # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - /mnt/media_rw/e68d7880-8c05-493e-8b92-b956aebeac0c/.ugreen_nas/214558/Docker/Immich/model-cache:/cache env_file: - stack.env restart: always healthcheck: disable: false networks: network: ipv4_address: 172.24.0.3 redis: container_name: immich_redis image: docker.io/redis:6.2-alpine@sha256:e3b17ba9479deec4b7d1eeec1548a253acc5374d68d3b27937fcfe4df8d18c7e restart: always healthcheck: test: redis-cli ping || exit 1 networks: network: ipv4_address: 172.24.0.4 database: container_name: immich_postgres image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' volumes: - /mnt/media_rw/e68d7880-8c05-493e-8b92-b956aebeac0c/.ugreen_nas/214558/Docker/Immich/pgdata:/var/lib/postgresql/data healthcheck: test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 interval: 5m start_interval: 30s start_period: 5m command: ["postgres", "-c", "shared_preload_libraries=vectors.so", "-c", 'search_path="$$user", public, vectors', "-c", "logging_collector=on", "-c", "max_wal_size=2GB", "-c", "shared_buffers=512MB", "-c", "wal_compression=on"] restart: always networks: network: ipv4_address: 172.24.0.6 networks: network: ipam: config: - subnet: 172.24.0.0/16 gateway: 172.24.0.1 ``` ### Your .env content ```Shell DB_HOSTNAME=immich_postgres DB_USERNAME=postgres DB_PASSWORD=H4#Xhgti7%FoCQ DB_DATABASE_NAME=immich REDIS_HOSTNAME=immich_redis UPLOAD_LOCATION=/mnt/media_rw/5cda1ac3-58fe-4df5-97f6-6eb0aa662c51/.ugreen_nas/214558/Pictures/Immich LOG_LEVEL=log TYPESENSE_API_KEY=QCkiTy*f*fCNJ6iU7cr3q@bmf67bgtX#uec9B PUBLIC_LOGIN_PAGE_MESSAGE="My Family Photos and Videos Backup Server" ``` ### Reproduction steps 1. open the_photo_in_my_phone.jpg directly in pc, you can see full exif info 2. upload it with andriod phone, most exif info lost (you can download it and check the exif info) ### Relevant log output _No response_ ### Additional information _No response_
Author
Owner

@bo0tzz commented on GitHub (Oct 4, 2024):

What phone do you have? Some phones are known for removing gps metadata if Immich doesn't have Location permissions, but I've never heard about other metadata being removed.

@bo0tzz commented on GitHub (Oct 4, 2024): What phone do you have? Some phones are known for removing gps metadata if Immich doesn't have Location permissions, but I've never heard about other metadata being removed.
Author
Owner

@charlieshen7 commented on GitHub (Oct 4, 2024):

What phone do you have? Some phones are known for removing gps metadata if Immich doesn't have Location permissions, but I've never heard about other metadata being removed.你有什么电话?如果 Immich 没有位置权限,某些手机会删除 GPS 元数据,但我从未听说过其他元数据被删除。

Meizu 21 pro, This is a Chinese brand phone, I'm not sure what impact the local hardware will have on the upload process. The EXIF ​​information of these photos can be read normally in the photo album that comes with the mobile phone system.

@charlieshen7 commented on GitHub (Oct 4, 2024): > What phone do you have? Some phones are known for removing gps metadata if Immich doesn't have Location permissions, but I've never heard about other metadata being removed.你有什么电话?如果 Immich 没有位置权限,某些手机会删除 GPS 元数据,但我从未听说过其他元数据被删除。 Meizu 21 pro, This is a Chinese brand phone, I'm not sure what impact the local hardware will have on the upload process. The EXIF ​​information of these photos can be read normally in the photo album that comes with the mobile phone system.
Author
Owner

@mmomjian commented on GitHub (Oct 4, 2024):

Immich uploads files completely untouched, so if data is missing, it’s most likely being stripped by the phone before/when Immich can access the file.

@mmomjian commented on GitHub (Oct 4, 2024): Immich uploads files completely untouched, so if data is missing, it’s most likely being stripped by the phone before/when Immich can access the file.
Author
Owner

@charlieshen7 commented on GitHub (Oct 4, 2024):

Immich uploads files completely untouched, so if data is missing, it’s most likely being stripped by the phone before/when Immich can access the file.Immich 上传的文件完全不受影响,因此如果数据丢失,很可能在 Immich 可以访问该文件之前/时被手机删除。

Is it because the Immich software on my phone does not have permission to read the exif information? I don’t know where this permission should be managed. The system shows that the read permission for photos and videos is already turned on.

@charlieshen7 commented on GitHub (Oct 4, 2024): > Immich uploads files completely untouched, so if data is missing, it’s most likely being stripped by the phone before/when Immich can access the file.Immich 上传的文件完全不受影响,因此如果数据丢失,很可能在 Immich 可以访问该文件之前/时被手机删除。 Is it because the Immich software on my phone does not have permission to read the exif information? I don’t know where this permission should be managed. The system shows that the read permission for photos and videos is already turned on.
Author
Owner

@charlieshen7 commented on GitHub (Oct 4, 2024):

I know the reason.
There is a privacy protection function in the mobile phone that will erase the exif related information when the application reads it, causing the information to be lost when uploading.
After turning off this function, everything is normal

@charlieshen7 commented on GitHub (Oct 4, 2024): I know the reason. There is a privacy protection function in the mobile phone that will erase the exif related information when the application reads it, causing the information to be lost when uploading. After turning off this function, everything is normal
Author
Owner

@mnalis commented on GitHub (Mar 29, 2025):

After turning off this function, everything is normal

@charlieshen7 can you share where you can turn off this exif-stripping function, how is it called / where is it located ?

@mnalis commented on GitHub (Mar 29, 2025): > After turning off this function, everything is normal @charlieshen7 can you share where you can turn off this exif-stripping function, how is it called / where is it located ?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#4471