Certain DNG files cannot be processed #3964

Open
opened 2026-02-20 02:19:18 -05:00 by deekerman · 43 comments
Owner

Originally created by @KingOfDog on GitHub (Sep 29, 2024).

The bug

Certain DNG files of mine can't be processed by Immich. They only show up as broken images, while the metadata is correctly displayed. It appears to mostly occur with DNG files that were created by Lightroom, e.g. through HDR or Panorama stitching, of ARW raw photos from my Sony a7 IV camera. See the example image here.

image

I've tracked down the issue to the libraw library not being able to parse the DNG files. If I build libraw from source with the Adobe DNG SDK linked, on the other hand, it is actually able to read out details from the file. raw-identify then says that the file is a Sony ILCE-7M4 image.

Would it be possible to include the Adobe DNG SDK in Immich server in any way? Or is there an easier way to get those files to show up?

The OS that Immich Server is running on

Unraid 6.12.10

Version of Immich Server

1.116.2

Version of Immich Mobile App

1.116.1 build.161

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # extends:
    #   file: hwaccel.transcoding.yml
    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /mnt/user/KingOfDog/Photos/:/mnt/photos
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

  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: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:d6c2911ac51b289db208767581a5d154544f2b2fe4914ea5056443f62dc6e900
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  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:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT SUM(checksum_failures) 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
  
volumes:
  model-cache:

Your .env content

# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/user/immich/upload
# The location where your database files are stored
DB_DATA_LOCATION=/mnt/user/immich/database

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
DB_PASSWORD=*****

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Reproduction steps

  1. Upload the file to Immich
  2. The image won't show up

Relevant log output

[Nest] 7  - 09/29/2024, 10:32:17 AM   ERROR [Microservices:JobService] Unable to run job handler (thumbnailGeneration/generate-preview): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/photos/2024/2024-09/2024-09-19_Rückfahrt nach Trondheim/Sony a7 IV Photo/_A7F9420-HDR.dng' @ error/dng.c/ReadDNGImage/504 (null)
[Nest] 7  - 09/29/2024, 10:32:17 AM   ERROR [Microservices:JobService] Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/photos/2024/2024-09/2024-09-19_Rückfahrt nach Trondheim/Sony a7 IV Photo/_A7F9420-HDR.dng' @ error/dng.c/ReadDNGImage/504 (null)
    at Sharp.toFile (/usr/src/app/node_modules/sharp/lib/output.js:90:19)
    at MediaRepository.generateThumbnail (/usr/src/app/dist/repositories/media.repository.js:69:14)
    at MediaService.generateThumbnail (/usr/src/app/dist/services/media.service.js:174:48)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async MediaService.handleGeneratePreview (/usr/src/app/dist/services/media.service.js:139:29)
    at async /usr/src/app/dist/services/job.service.js:171:36
    at async Worker.processJob (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:394:28)
    at async Worker.retryIfFailed (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:581:24)
[Nest] 7  - 09/29/2024, 10:32:17 AM   ERROR [Microservices:JobService] Object:
{
  "id": "4c24f2af-dab2-4634-8236-2a46c01716c6"
}

Additional information

No response

Originally created by @KingOfDog on GitHub (Sep 29, 2024). ### The bug Certain DNG files of mine can't be processed by Immich. They only show up as broken images, while the metadata is correctly displayed. It appears to mostly occur with DNG files that were created by Lightroom, e.g. through HDR or Panorama stitching, of ARW raw photos from my Sony a7 IV camera. See the example image [here](https://cloud.marcelstruck.de/s/PnDEzjAwCoHLd8Q). ![image](https://github.com/user-attachments/assets/d4dd2a25-e5f6-409e-9c8e-d1051fcf138f) I've tracked down the issue to the `libraw` library not being able to parse the DNG files. If I build `libraw` from source with the Adobe DNG SDK linked, on the other hand, it is actually able to read out details from the file. `raw-identify` then says that the file is a `Sony ILCE-7M4` image. Would it be possible to include the Adobe DNG SDK in Immich server in any way? Or is there an easier way to get those files to show up? ### The OS that Immich Server is running on Unraid 6.12.10 ### Version of Immich Server 1.116.2 ### Version of Immich Mobile App 1.116.1 build.161 ### Platform with the issue - [X] Server - [ ] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML name: immich services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} # extends: # file: hwaccel.transcoding.yml # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /mnt/user/KingOfDog/Photos/:/mnt/photos - /etc/localtime:/etc/localtime:ro env_file: - .env ports: - 2283:3001 depends_on: - redis - database restart: always 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: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - model-cache:/cache env_file: - .env restart: always redis: container_name: immich_redis image: docker.io/redis:6.2-alpine@sha256:d6c2911ac51b289db208767581a5d154544f2b2fe4914ea5056443f62dc6e900 healthcheck: test: redis-cli ping || exit 1 restart: always 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: - ${DB_DATA_LOCATION}:/var/lib/postgresql/data healthcheck: test: pg_isready --dbname='${DB_DATABASE_NAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT SUM(checksum_failures) 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 volumes: model-cache: ``` ### Your .env content ```Shell # The location where your uploaded files are stored UPLOAD_LOCATION=/mnt/user/immich/upload # The location where your database files are stored DB_DATA_LOCATION=/mnt/user/immich/database # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List # TZ=Etc/UTC # The Immich version to use. You can pin this to a specific version like "v1.71.0" IMMICH_VERSION=release # Connection secret for postgres. You should change it to a random password DB_PASSWORD=***** # The values below this line do not need to be changed ################################################################################### DB_USERNAME=postgres DB_DATABASE_NAME=immich ``` ### Reproduction steps 1. Upload the [file](https://cloud.marcelstruck.de/s/PnDEzjAwCoHLd8Q) to Immich 2. The image won't show up ### Relevant log output ```shell [Nest] 7 - 09/29/2024, 10:32:17 AM ERROR [Microservices:JobService] Unable to run job handler (thumbnailGeneration/generate-preview): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/photos/2024/2024-09/2024-09-19_Rückfahrt nach Trondheim/Sony a7 IV Photo/_A7F9420-HDR.dng' @ error/dng.c/ReadDNGImage/504 (null) [Nest] 7 - 09/29/2024, 10:32:17 AM ERROR [Microservices:JobService] Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/photos/2024/2024-09/2024-09-19_Rückfahrt nach Trondheim/Sony a7 IV Photo/_A7F9420-HDR.dng' @ error/dng.c/ReadDNGImage/504 (null) at Sharp.toFile (/usr/src/app/node_modules/sharp/lib/output.js:90:19) at MediaRepository.generateThumbnail (/usr/src/app/dist/repositories/media.repository.js:69:14) at MediaService.generateThumbnail (/usr/src/app/dist/services/media.service.js:174:48) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async MediaService.handleGeneratePreview (/usr/src/app/dist/services/media.service.js:139:29) at async /usr/src/app/dist/services/job.service.js:171:36 at async Worker.processJob (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:394:28) at async Worker.retryIfFailed (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:581:24) [Nest] 7 - 09/29/2024, 10:32:17 AM ERROR [Microservices:JobService] Object: { "id": "4c24f2af-dab2-4634-8236-2a46c01716c6" } ``` ### Additional information _No response_
Author
Owner

@alexisharara commented on GitHub (Oct 1, 2024):

Same issue with Apple now supporting JPEG-XL format on iOS 18 which stores them in a .DNG container

@alexisharara commented on GitHub (Oct 1, 2024): Same issue with Apple now supporting JPEG-XL format on iOS 18 which stores them in a .DNG container
Author
Owner

@mertalev commented on GitHub (Oct 3, 2024):

Would it be possible to include the Adobe DNG SDK in Immich server in any way?

We build libraw ourselves, so this is possible. IIRC DNG SDK didn't have good support for Linux (only Windows and Mac), so it's a bit of a pain to get it working. A PR for the base image would be welcome if you're able to make it work in Linux.

@mertalev commented on GitHub (Oct 3, 2024): > Would it be possible to include the Adobe DNG SDK in Immich server in any way? We build libraw ourselves, so this is possible. IIRC DNG SDK didn't have good support for Linux (only Windows and Mac), so it's a bit of a pain to get it working. A PR for the [base image](https://github.com/immich-app/base-images) would be welcome if you're able to make it work in Linux.
Author
Owner

@Nexus-Unknown commented on GitHub (Oct 14, 2024):

Same issue on Galaxy S24 Ultra and Windows pc

@Nexus-Unknown commented on GitHub (Oct 14, 2024): Same issue on Galaxy S24 Ultra and Windows pc
Author
Owner

@thomashollier commented on GitHub (Oct 14, 2024):

Same here, using v1.117.

@thomashollier commented on GitHub (Oct 14, 2024): Same here, using v1.117.
Author
Owner

@devtechk commented on GitHub (Oct 25, 2024):

Hopefullly I'm not alone... some dng are displayed well other not... like yours. I hope upgrade will adjust it

@devtechk commented on GitHub (Oct 25, 2024): Hopefullly I'm not alone... some dng are displayed well other not... like yours. I hope upgrade will adjust it
Author
Owner

@andresledo commented on GitHub (Nov 4, 2024):

Same issue with Galaxy S23 Ultra images from expert raw

@andresledo commented on GitHub (Nov 4, 2024): Same issue with Galaxy S23 Ultra images from expert raw
Author
Owner

@jedie commented on GitHub (Nov 8, 2024):

Same here with v1.119.1 and DNG from different camery types: Pentax K-1, Pentax K-5 II, Pentax K-01 and more ... All of them display only the very low res preview thumbnail :(

@jedie commented on GitHub (Nov 8, 2024): Same here with [v1.119.1](https://github.com/immich-app/immich/releases/tag/v1.119.1) and DNG from different camery types: Pentax K-1, Pentax K-5 II, Pentax K-01 and more ... All of them display only the very low res preview thumbnail :(
Author
Owner

@mertalev commented on GitHub (Nov 8, 2024):

There's an option in the Image Settings to use the embedded preview where possible. The result should be better if you enable that, re-run thumbnail generation on all assets and clear browser cache once it's done.

@mertalev commented on GitHub (Nov 8, 2024): There's an option in the Image Settings to use the embedded preview where possible. The result should be better if you enable that, re-run thumbnail generation on all assets and clear browser cache once it's done.
Author
Owner

@Nexus-Unknown commented on GitHub (Nov 9, 2024):

This fixed it for me, thanks!

@Nexus-Unknown commented on GitHub (Nov 9, 2024): This fixed it for me, thanks!
Author
Owner

@jedie commented on GitHub (Nov 13, 2024):

There's an option in the Image Settings to use the embedded preview where possible. The result should be better if you enable that, re-run thumbnail generation on all assets and clear browser cache once it's done.

But this fix only low res thumbnails... What i mean in https://github.com/immich-app/immich/issues/13029#issuecomment-2465799903 above: In detail view of one picture is also only the low res thumbnail used! This will be not fixed, isn't it?

@jedie commented on GitHub (Nov 13, 2024): > There's an option in the Image Settings to use the embedded preview where possible. The result should be better if you enable that, re-run thumbnail generation on all assets and clear browser cache once it's done. But this fix only low res thumbnails... What i mean in https://github.com/immich-app/immich/issues/13029#issuecomment-2465799903 above: In detail view of one picture is also only the low res thumbnail used! This will be not fixed, isn't it?
Author
Owner

@ibigbug commented on GitHub (Dec 31, 2024):

I'm having the same issue and realized that my failing DNG can't be opened by Windows Photo editor either. though it works fine in Photoshop on Windows

@ibigbug commented on GitHub (Dec 31, 2024): I'm having the same issue and realized that my failing DNG can't be opened by Windows Photo editor either. though it works fine in Photoshop on Windows
Author
Owner

@louhivuori commented on GitHub (Jan 5, 2025):

Confirming that this affects iPhone DNGs from iOS18. The above workaround enabling embedded previews helps until issue is fixed.

Administration > Settings > Image Settings > Prefer embedded preview
and then
Jobs > Generate thumbnails > Missing

@louhivuori commented on GitHub (Jan 5, 2025): Confirming that this affects iPhone DNGs from iOS18. The above workaround enabling embedded previews helps until issue is fixed. Administration > Settings > Image Settings > Prefer embedded preview and then Jobs > Generate thumbnails > Missing
Author
Owner

@Riasann commented on GitHub (Jan 31, 2025):

Sorry the issue still happend also with the Settings:

"Administration > Settings > Image Settings > Prefer embedded preview
and then
Jobs > Generate thumbnails > Missing"

DNG and HEIC from IOS18 cannot be displayed and no thumbnails.

Server : v1.125.7
Docker Immage
Raspberrypi 5
Linux raspberrypi 6.6.62+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.62-1+rpt1 (2024-11-25) aarch64

But the issue not happend by all IOS18 DNG and HEIC, but seam like happend after i send the images via Whatsapp and then this Copy getting upload via immich IOS App.
So the Modifyed Copy dosent want to load.

The same Image upload from owner IOS18 works.

@Riasann commented on GitHub (Jan 31, 2025): Sorry the issue still happend also with the Settings: "Administration > Settings > Image Settings > Prefer embedded preview and then Jobs > Generate thumbnails > Missing" DNG and HEIC from IOS18 cannot be displayed and no thumbnails. Server : v1.125.7 Docker Immage Raspberrypi 5 Linux raspberrypi 6.6.62+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.62-1+rpt1 (2024-11-25) aarch64 But the issue not happend by all IOS18 DNG and HEIC, but seam like happend after i send the images via Whatsapp and then this Copy getting upload via immich IOS App. So the Modifyed Copy dosent want to load. The same Image upload from owner IOS18 works.
Author
Owner

@julian-alarcon commented on GitHub (Feb 26, 2025):

I have the same error from an Image from Samsung Galaxy S23 Plus Expert RAW, and also not able to open it in Linux with Darktable or Shotwell.

Report in Darktable: https://discuss.pixls.us/t/i-cant-import-dng-file-in-the-latest-version-of-darktable/35724/11
Also, https://github.com/darktable-org/rawspeed/issues/516.

It seems that latest iPhone and Samsung phones are changing how they store raw files and that should be supported.

A possible workaround is to convert those using a program that supports them (Adobe DNG converter)

@julian-alarcon commented on GitHub (Feb 26, 2025): I have the same error from an Image from Samsung Galaxy S23 Plus Expert RAW, and also not able to open it in Linux with Darktable or Shotwell. Report in Darktable: https://discuss.pixls.us/t/i-cant-import-dng-file-in-the-latest-version-of-darktable/35724/11 Also, https://github.com/darktable-org/rawspeed/issues/516. It seems that latest iPhone and Samsung phones are changing how they store raw files and that should be supported. A possible workaround is to convert those using a program that supports them (Adobe DNG converter)
Author
Owner

@abhijeetviswam commented on GitHub (Mar 9, 2025):

I have a slightly different, but possibly related issue.

For DNG's edited with Lightroom, on desktop I don't see any of the edits applied in the thumbnails or full views. On Android mobile also I see the thumbnail doesn't have any edits applied. However, on full view in android mobile shows the edits properly.

As I understand from various reddit threads, RAW files are supposed to show up as, well RAW in immich gallery. So I guess what I'm seeing is probably a bug and not a feature?

But if it works in android, can we get it working everywhere else as well?

https://github.com/user-attachments/assets/00a50804-79db-4e06-b1c0-b597738dc96c

@abhijeetviswam commented on GitHub (Mar 9, 2025): I have a slightly different, but possibly related issue. For DNG's edited with Lightroom, on desktop I don't see any of the edits applied in the thumbnails or full views. On Android mobile also I see the thumbnail doesn't have any edits applied. However, on full view in android mobile shows the edits properly. As I understand from various reddit threads, RAW files are supposed to show up as, well RAW in immich gallery. So I guess what I'm seeing is probably a bug and not a feature? But if it works in android, can we get it working everywhere else as well? https://github.com/user-attachments/assets/00a50804-79db-4e06-b1c0-b597738dc96c
Author
Owner

@carloslockward commented on GitHub (Mar 26, 2025):

Just encountered this issue with .dng RAW images taken on an S24 Ultra. Is the team aware of the issue?

@carloslockward commented on GitHub (Mar 26, 2025): Just encountered this issue with .dng RAW images taken on an S24 Ultra. Is the team aware of the issue?
Author
Owner

@mertalev commented on GitHub (Mar 26, 2025):

There's not much we can do about it since DNG compatibility is related to upstream image processing libraries. The potential solution is to use the Adobe DNG SDK, but that doesn't (officially) support Linux.

@mertalev commented on GitHub (Mar 26, 2025): There's not much we can do about it since DNG compatibility is related to upstream image processing libraries. The potential solution is to use the Adobe DNG SDK, but that doesn't (officially) support Linux.
Author
Owner

@vazquezjm commented on GitHub (Apr 22, 2025):

Same issue with the Samsung S25 Ultra and .DNG images: they don’t even appear in the app’s main feed, nor are they backed up to the server.

@vazquezjm commented on GitHub (Apr 22, 2025): Same issue with the Samsung S25 Ultra and .DNG images: they don’t even appear in the app’s main feed, nor are they backed up to the server.
Author
Owner

@MK73DS commented on GitHub (Jun 1, 2025):

Same issue here with a Samsung Galaxy S24 Ultra's raw dng files. They are backed up but thumbnail generation fails.

@MK73DS commented on GitHub (Jun 1, 2025): Same issue here with a Samsung Galaxy S24 Ultra's raw dng files. They are backed up but thumbnail generation fails.
Author
Owner

@timbatog commented on GitHub (Jun 5, 2025):

Is there any value in providing sample DNG files from my OM-1 Mark II Version 1.2 - both as native RAW and converted in Lightroom DNGs (lossy and lossless)?

I'd love to be able to see my DNGs in Immich but as of today - June 2025 - these just appear as broken thumbnails and break by processing workflow.

@timbatog commented on GitHub (Jun 5, 2025): Is there any value in providing sample DNG files from my OM-1 Mark II Version 1.2 - both as native RAW and converted in Lightroom DNGs (lossy and lossless)? I'd love to be able to see my DNGs in Immich but as of today - June 2025 - these just appear as broken thumbnails and break by processing workflow.
Author
Owner

@Kh3nsu commented on GitHub (Aug 9, 2025):

Any news on this? I sadly also have some DNG Images from a friend which are just showing up as broken images, but when I download them, they are fine.

@Kh3nsu commented on GitHub (Aug 9, 2025): Any news on this? I sadly also have some DNG Images from a friend which are just showing up as broken images, but when I download them, they are fine.
Author
Owner

@PseudoResonance commented on GitHub (Aug 26, 2025):

Adobe DNG SDK is quite easy to build on Linux, this is not an issue. Libraw already supports Adobe DNG as of snapshot 202403 and can be built with it.

The issue right now is ImageMagick does not support Adobe DNG, so while I have added the DNG SDK to the build image, Immich still wasn't able to unpack my DNGs until ImageMagick support is done.

For reference, here is my Immich base images repository I was using to test support.

@PseudoResonance commented on GitHub (Aug 26, 2025): Adobe DNG SDK is quite easy to build on Linux, this is not an issue. Libraw already supports Adobe DNG as of snapshot 202403 and can be built with it. The issue right now is [ImageMagick does not support Adobe DNG](https://github.com/ImageMagick/ImageMagick/issues/8324), so while I have added the DNG SDK to the build image, Immich still wasn't able to unpack my DNGs until ImageMagick support is done. For reference, [here is my Immich base images repository](https://github.com/PseudoResonance/immich-base-images/tree/dng) I was using to test support.
Author
Owner

@mertalev commented on GitHub (Aug 26, 2025):

ImageMagick should only need to interact with libraw and libraw is what should interact with DNG SDK directly, right? Is there a different libraw API it would need to use in this case?

@mertalev commented on GitHub (Aug 26, 2025): ImageMagick should only need to interact with libraw and libraw is what should interact with DNG SDK directly, right? Is there a different libraw API it would need to use in this case?
Author
Owner

@PseudoResonance commented on GitHub (Aug 26, 2025):

ImageMagick should only need to interact with libraw and libraw is what should interact with DNG SDK directly, right?

Nope, it's documented here. Libraw works with Adobe DNG, but you have to pass the dng_host to it yourself, which means that ImageMagick has to build with the SDK too.

Here's a sample app, dcraw_emu that utilizes it.

Also I said it in my ImageMagick issue, but while I could get it done, I'm not sure of ImageMagick's coding standards, so if anyone here knows how they handle C/C++ interop there, it'd be great if it could get implemented. I'm pretty sure it should be relatively simple, but I just spent the past few days learning how all these other SDKs come together and am a little worn out...

Also some additional info for anyone who happens to pass by.

Adobe DNG SDK 1.7.1 is compatible with libjxl up to version 0.8.x, but not 0.9.x. I made a patch to build against newer libjxl.

If you want to try building all this yourself, I would advise you to take a look at some of the fixes I had to do to get it all building, because Adobe's build scripts are the absolute worst. Hopefully it can serve as a starting point at least to prevent the suffering that is dealing with them.

Edit: It's unlikely that ImageMagick will implement support for the latest libraw until the specification has been finalized in a release, so it's possible that this will not be available for a year.

@PseudoResonance commented on GitHub (Aug 26, 2025): > ImageMagick should only need to interact with libraw and libraw is what should interact with DNG SDK directly, right? [Nope, it's documented here](https://github.com/LibRaw/LibRaw/blob/ae32c08bfe2374c651176ecf32e07a3751697488/README.DNGSDK.txt#L31). Libraw works with Adobe DNG, but you have to pass the `dng_host` to it yourself, which means that ImageMagick has to build with the SDK too. [Here's a sample app, dcraw_emu](https://github.com/LibRaw/LibRaw/blob/ae32c08bfe2374c651176ecf32e07a3751697488/samples/dcraw_emu.cpp#L462) that utilizes it. Also I said it in my ImageMagick issue, but while I could get it done, I'm not sure of ImageMagick's coding standards, so if anyone here knows how they handle C/C++ interop there, it'd be great if it could get implemented. I'm pretty sure it should be relatively simple, but I just spent the past few days learning how all these other SDKs come together and am a little worn out... Also some additional info for anyone who happens to pass by. Adobe DNG SDK 1.7.1 is compatible with libjxl up to version 0.8.x, but not 0.9.x. I [made a patch](https://github.com/PseudoResonance/immich-base-images/blob/9a80d18b3e891a0bd89f855a1fe0f1cfc6185c2e/server/sources/libdng-build/dng_jxl.cpp.patch) to build against newer libjxl. If you want to try building all this yourself, I would advise you to take a look at [some of the fixes I had to do](https://github.com/PseudoResonance/immich-base-images/blob/dng/server/sources/libdng.sh) to get it all building, because Adobe's build scripts are the absolute worst. Hopefully it can serve as a starting point at least to prevent the suffering that is dealing with them. Edit: It's unlikely that ImageMagick will implement support for the latest libraw until the specification has been finalized in a release, so it's possible that this will not be available for a year.
Author
Owner

@nijahplays commented on GitHub (Oct 12, 2025):

Still having this issue on latest with the Samsung S25 Ultra RAW DNG files. They only load if the files are still stored on the uploading device.

@nijahplays commented on GitHub (Oct 12, 2025): Still having this issue on latest with the Samsung S25 Ultra RAW DNG files. They only load if the files are still stored on the uploading device.
Author
Owner

@FlopRe commented on GitHub (Oct 12, 2025):

+1 Same issue here on raw pictures from S23 Ultra - but ONLY on a few photos out of hundreds. It's also making mobile app get stuck on backup with it infinitely loading and never finishing.

Edit: Resolved on its own. I quit the app and reopened, and the backup now seems to have completed with no further issues. I also searched for the photo using its filename and can see the thumbnail and full size pic (although it looks terrible converted).

@FlopRe commented on GitHub (Oct 12, 2025): +1 Same issue here on raw pictures from S23 Ultra - but ONLY on a few photos out of hundreds. It's also making mobile app get stuck on backup with it infinitely loading and never finishing. Edit: Resolved on its own. I quit the app and reopened, and the backup now seems to have completed with no further issues. I also searched for the photo using its filename and can see the thumbnail and full size pic (although it looks terrible converted).
Author
Owner

@wassupluke commented on GitHub (Oct 12, 2025):

+1 same issue here and also unresolved by the aforementioned workaround.

It is severe enough a crash that it brings down my server each time it tries to generate those thumbnails.

The particular images in my case are exposure-bracketed Canon Raw (.CR2) files that I've merged in Lightroom Classic which saves them as .dng files that are backed up to my NAS and accessed as an external library in Immich, if that helps determine anything. But yes, can confirm that Magick complains the file format is unsupported.

e.g., (hundreds of these)

[Nest] 7  - 10/12/2025, 9:57:04 PM   ERROR [Microservices:{"id":"d214f0cd-0702-437e-aa6c-2aa299047c77"}] Unable to run job handler (AssetGenerateThumbnails): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/NAS_Lightroom_ro/2023/10 - SENIOR PHOTOS/IMG_9656-HDR.dng' @ error/dng.c/ReadDNGImage/536 (null)
Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/NAS_Lightroom_ro/2023/10 - SENIOR PHOTOS/IMG_9656-HDR.dng' @ error/dng.c/ReadDNGImage/536 (null)
    at Sharp.toBuffer (/usr/src/app/server/node_modules/.pnpm/sharp@0.34.3/node_modules/sharp/lib/output.js:163:17)
    at MediaRepository.decodeImage (/usr/src/app/server/dist/repositories/media.repository.js:105:68)
    at descriptor.value (/usr/src/app/server/dist/repositories/telemetry.repository.js:157:39)
    at MediaService.decodeImage (/usr/src/app/server/dist/services/media.service.js:177:59)
    at async MediaService.generateImageThumbnails (/usr/src/app/server/dist/services/media.service.js:189:44)
    at async MediaService.handleGenerateThumbnails (/usr/src/app/server/dist/services/media.service.js:116:25)
@wassupluke commented on GitHub (Oct 12, 2025): *+1* same issue here and also unresolved by the aforementioned workaround. It is severe enough a crash that it brings down my server each time it tries to generate those thumbnails. The particular images in my case are exposure-bracketed Canon Raw (`.CR2`) files that I've merged in Lightroom Classic which saves them as `.dng` files that are backed up to my NAS and accessed as an external library in Immich, if that helps determine anything. But yes, can confirm that Magick complains the file format is unsupported. e.g., (hundreds of these) ```bash [Nest] 7 - 10/12/2025, 9:57:04 PM ERROR [Microservices:{"id":"d214f0cd-0702-437e-aa6c-2aa299047c77"}] Unable to run job handler (AssetGenerateThumbnails): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/NAS_Lightroom_ro/2023/10 - SENIOR PHOTOS/IMG_9656-HDR.dng' @ error/dng.c/ReadDNGImage/536 (null) Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/mnt/NAS_Lightroom_ro/2023/10 - SENIOR PHOTOS/IMG_9656-HDR.dng' @ error/dng.c/ReadDNGImage/536 (null) at Sharp.toBuffer (/usr/src/app/server/node_modules/.pnpm/sharp@0.34.3/node_modules/sharp/lib/output.js:163:17) at MediaRepository.decodeImage (/usr/src/app/server/dist/repositories/media.repository.js:105:68) at descriptor.value (/usr/src/app/server/dist/repositories/telemetry.repository.js:157:39) at MediaService.decodeImage (/usr/src/app/server/dist/services/media.service.js:177:59) at async MediaService.generateImageThumbnails (/usr/src/app/server/dist/services/media.service.js:189:44) at async MediaService.handleGenerateThumbnails (/usr/src/app/server/dist/services/media.service.js:116:25) ```
Author
Owner

@kmilos commented on GitHub (Oct 13, 2025):

I've merged in Lightroom Classic which saves them as .dng files

@wassupluke You could choose to export to an earlier DNG version that is not 1.7 and thus has wider compatibility.

@kmilos commented on GitHub (Oct 13, 2025): > I've merged in Lightroom Classic which saves them as .dng files @wassupluke You could choose to export to an earlier DNG version that is _not_ 1.7 and thus has wider compatibility.
Author
Owner

@QuakeGio83 commented on GitHub (Oct 22, 2025):

Hi,
I have same problem:

immch: 2025-10-19 05:42:52.428975+00:00�[31m[Nest] 7 - �[39m10/19/2025, 7:42:52 AM �[31m ERROR�[39m �[33m[Microservices:{"id":"b4a7a1dd-c305-4e77-9840-4164acd014c1"}]�[39m �[31mUnable to run job handler (AssetGenerateThumbnails): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file /data/library/admin/2025/2025-10-12/20251012_181310.dng' @ error/dng.c/ReadDNGImage/536 (null)�[39m 2025-10-19 05:42:52.429081+00:00Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file /data/library/admin/2025/2025-10-12/20251012_181310.dng' @ error/dng.c/ReadDNGImage/536 (null)

Are you working to fix it? I'm using Samsung S25 Ultra and to keep best pictures quality I use RAW file in expert mode when take pictures

@QuakeGio83 commented on GitHub (Oct 22, 2025): Hi, I have same problem: immch: 2025-10-19 05:42:52.428975+00:00�[31m[Nest] 7 - �[39m10/19/2025, 7:42:52 AM �[31m ERROR�[39m �[33m[Microservices:{"id":"b4a7a1dd-c305-4e77-9840-4164acd014c1"}]�[39m �[31mUnable to run job handler (AssetGenerateThumbnails): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file /data/library/admin/2025/2025-10-12/20251012_181310.dng' @ error/dng.c/ReadDNGImage/536 (null)�[39m 2025-10-19 05:42:52.429081+00:00Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file /data/library/admin/2025/2025-10-12/20251012_181310.dng' @ error/dng.c/ReadDNGImage/536 (null) Are you working to fix it? I'm using Samsung S25 Ultra and to keep best pictures quality I use RAW file in expert mode when take pictures
Author
Owner

@quangtdev commented on GitHub (Oct 27, 2025):

same issue

@quangtdev commented on GitHub (Oct 27, 2025): same issue
Author
Owner

@danieLayosh commented on GitHub (Nov 10, 2025):

I have the same error when taking a photo on iphone 17 pro max raw, dng files are backup and can be viewed in the mobile app, but when opening on the web those dng photos cant be processed and it says image "loading error"
I started looking around for some clues about what can cause it. I thought maybe the format is not supported on the web version or maybe web browsers can't even open DNG files but no luck for me.

@danieLayosh commented on GitHub (Nov 10, 2025): I have the same error when taking a photo on iphone 17 pro max raw, dng files are backup and can be viewed in the mobile app, but when opening on the web those dng photos cant be processed and it says image "loading error" I started looking around for some clues about what can cause it. I thought maybe the format is not supported on the web version or maybe web browsers can't even open DNG files but no luck for me.
Author
Owner

@traktuner commented on GitHub (Nov 11, 2025):

I have the same error when taking a photo on iphone 17 pro max raw, dng files are backup and can be viewed in the mobile app, but when opening on the web those dng photos cant be processed and it says image "loading error" I started looking around for some clues about what can cause it. I thought maybe the format is not supported on the web version or maybe web browsers can't even open DNG files but no luck for me.

Same issue for me, same phone.

This is the error I get in the logs, I guess the new cameras are not yet supported by libraw (@mertalev) ?

[Nest] 6 - 11/11/2025, 6:23:27 AM ERROR [Microservices:{"id":"XXXXXXXX-XX-XX-XX"}] Unable to run job handler (AssetGenerateThumbnails): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file /usr/src/app/upload/library/XXXX/XXXX/XXXX-XX-XX/IMG_XXXX.dng' @ error/dng.c/ReadDNGImage/536 (null) Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file /usr/src/app/upload/library/XXX/XXX/XXXX-XX-XX/IMG_XXXX.dng' @ error/dng.c/ReadDNGImage/536 (null)
at Sharp.toBuffer (/usr/src/app/server/node_modules/.pnpm/sharp@0.34.4/node_modules/sharp/lib/output.js:163:17)
at MediaRepository.decodeImage (/usr/src/app/server/dist/repositories/media.repository.js:105:68)
at MediaService.decodeImage (/usr/src/app/server/dist/services/media.service.js:177:59)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async MediaService.generateImageThumbnails (/usr/src/app/server/dist/services/media.service.js:190:44)
at async MediaService.handleGenerateThumbnails (/usr/src/app/server/dist/services/media.service.js:116:25)
at async JobService.onJobRun (/usr/src/app/server/dist/services/job.service.js:199:30)
at async EventRepository.onEvent (/usr/src/app/server/dist/repositories/event.repository.js:91:13)
at async /usr/src/app/server/node_modules/.pnpm/bullmq@5.61.2/node_modules/bullmq/dist/cjs/classes/worker.js:528:32

@traktuner commented on GitHub (Nov 11, 2025): > I have the same error when taking a photo on iphone 17 pro max raw, dng files are backup and can be viewed in the mobile app, but when opening on the web those dng photos cant be processed and it says image "loading error" I started looking around for some clues about what can cause it. I thought maybe the format is not supported on the web version or maybe web browsers can't even open DNG files but no luck for me. Same issue for me, same phone. This is the error I get in the logs, I guess the new cameras are not yet supported by libraw (@mertalev) ? [Nest] 6 - 11/11/2025, 6:23:27 AM ERROR [Microservices:{"id":"XXXXXXXX-XX-XX-XX"}] Unable to run job handler (AssetGenerateThumbnails): Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/usr/src/app/upload/library/XXXX/XXXX/XXXX-XX-XX/IMG_XXXX.dng' @ error/dng.c/ReadDNGImage/536 (null) Error: Input file has corrupt header: magickload: Magick: Unsupported file format or not RAW file `/usr/src/app/upload/library/XXX/XXX/XXXX-XX-XX/IMG_XXXX.dng' @ error/dng.c/ReadDNGImage/536 (null) at Sharp.toBuffer (/usr/src/app/server/node_modules/.pnpm/sharp@0.34.4/node_modules/sharp/lib/output.js:163:17) at MediaRepository.decodeImage (/usr/src/app/server/dist/repositories/media.repository.js:105:68) at MediaService.decodeImage (/usr/src/app/server/dist/services/media.service.js:177:59) at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async MediaService.generateImageThumbnails (/usr/src/app/server/dist/services/media.service.js:190:44) at async MediaService.handleGenerateThumbnails (/usr/src/app/server/dist/services/media.service.js:116:25) at async JobService.onJobRun (/usr/src/app/server/dist/services/job.service.js:199:30) at async EventRepository.onEvent (/usr/src/app/server/dist/repositories/event.repository.js:91:13) at async /usr/src/app/server/node_modules/.pnpm/bullmq@5.61.2/node_modules/bullmq/dist/cjs/classes/worker.js:528:32
Author
Owner

@PseudoResonance commented on GitHub (Nov 11, 2025):

TLDR: Do you know people who work at Adobe? Please help us get in contact with their lawyers. Thank you.

Please, for the sake of everyone's notifications, stop commenting what we already know. Several people here have already very clearly outlined the exact issue, I gave links to the projects we are waiting on, as well as an estimated time frame (1 year).

Sending everyone here a million emails for every comment is not going to speed up the process.

In fact, the unfortunate reality is that these filles may never be decoded in Immich due to Adobe's communication failures and lack of any clear licensing.

If you really want to help make it happen, please put your valuable time towards contacting Adobe and figuring out the license for their DNG SDK. Until that happens, Immich can't decode these files.

I put some information about it here. I spent hours talking to people and getting nowhere...

I apologize for the harsh message, but I just want to get the word out that we need to be speaking with people at Adobe. Your efforts are wasted here.

@PseudoResonance commented on GitHub (Nov 11, 2025): TLDR: Do you know people who work at Adobe? Please help us get in contact with their lawyers. Thank you. Please, for the sake of everyone's notifications, stop commenting what we already know. Several people here have already very clearly outlined the exact issue, I gave links to the projects we are waiting on, as well as an estimated time frame (1 year). Sending everyone here a million emails for every comment is not going to speed up the process. In fact, the unfortunate reality is that these filles may never be decoded in Immich due to Adobe's communication failures and lack of any clear licensing. If you really want to help make it happen, please put your valuable time towards contacting Adobe and figuring out the license for their DNG SDK. Until that happens, Immich can't decode these files. [I put some information about it here](https://github.com/ImageMagick/ImageMagick/issues/8324#issuecomment-3226825601). I spent hours talking to people and getting nowhere... I apologize for the harsh message, but I just want to get the word out that we need to be speaking with people at Adobe. Your efforts are wasted here.
Author
Owner

@wassupluke commented on GitHub (Nov 11, 2025):

There's not much we can do about it since DNG compatibility is related to upstream image processing libraries. The potential solution is to use the Adobe DNG SDK, but that doesn't (officially) support Linux.

Understood (also understood is the most recent comment above me). In the short term, can we get an option to ignore .dng/.DNG file extensions so I can load my external library without crippling my immich server while it fails to process hundreds of dngs?

@wassupluke commented on GitHub (Nov 11, 2025): > There's not much we can do about it since DNG compatibility is related to upstream image processing libraries. The potential solution is to use the Adobe DNG SDK, but that doesn't (officially) support Linux. Understood (also understood is the most recent comment above me). In the short term, can we get an option to ignore .dng/.DNG file extensions so I can load my external library without crippling my immich server while it fails to process hundreds of dngs?
Author
Owner

@PseudoResonance commented on GitHub (Nov 11, 2025):

Understood (also understood is the most recent comment above me). In the short term, can we get an option to ignore .dng/.DNG file extensions so I can load my external library without crippling my immich server while it fails to process hundreds of dngs?

Unfortunately, no. Because it actually can read the older DNG file formats, so if it skipped all .dngs, it would miss potentially valid files.

Maybe an option could be added? I don't know, I'm not a maintainer. I just have a personal interest in solving this.

Edit: Just to clarify one thing, Adobe DNG SDK Linux support is a non issue. It's trivial to build and works as expected. The only thing truly stopping this is Adobe's licensing.

@PseudoResonance commented on GitHub (Nov 11, 2025): > Understood (also understood is the most recent comment above me). In the short term, can we get an option to ignore .dng/.DNG file extensions so I can load my external library without crippling my immich server while it fails to process hundreds of dngs? Unfortunately, no. Because it actually can read the older DNG file formats, so if it skipped all .dngs, it would miss potentially valid files. Maybe an option could be added? I don't know, I'm not a maintainer. I just have a personal interest in solving this. Edit: Just to clarify one thing, Adobe DNG SDK Linux support is a non issue. It's trivial to build and works as expected. The only thing truly stopping this is Adobe's licensing.
Author
Owner

@AGJSpiegelenberg commented on GitHub (Nov 12, 2025):

Isn't this the DNG SDK license agreement ? https://www.adobe.com/support/downloads/dng/dng_sdk_eula_mac.html

@AGJSpiegelenberg commented on GitHub (Nov 12, 2025): Isn't this the DNG SDK license agreement ? https://www.adobe.com/support/downloads/dng/dng_sdk_eula_mac.html
Author
Owner

@PseudoResonance commented on GitHub (Nov 12, 2025):

Isn't this the DNG SDK license agreement ? https://www.adobe.com/support/downloads/dng/dng_sdk_eula_mac.html

Maybe, but that's not good enough in law. That page's download link no longer functions and the last snapshot on Archive.org from 2020 is showing 1.5.1 available at the time. 1.5.1 was, I believe, the last download to include that license in the files. We need the licensing terms for 1.7.1, released in 2023.

@PseudoResonance commented on GitHub (Nov 12, 2025): > Isn't this the DNG SDK license agreement ? https://www.adobe.com/support/downloads/dng/dng_sdk_eula_mac.html Maybe, but that's not good enough in law. That page's download link no longer functions and the last snapshot on Archive.org from 2020 is showing 1.5.1 available at the time. 1.5.1 was, I believe, the last download to include that license in the files. We need the licensing terms for 1.7.1, released in 2023.
Author
Owner

@ptr727 commented on GitHub (Dec 7, 2025):

None of my DNG's created by Lightroom as part of RAW import workflow display, nor does any of my iPhone DNG images?

@ptr727 commented on GitHub (Dec 7, 2025): None of my DNG's created by Lightroom as part of RAW import workflow display, nor does any of my iPhone DNG images?
Author
Owner

@timbatog commented on GitHub (Dec 7, 2025):

To add to the complexity of understanding DNGs (sorry!) I've gone for DNG v16 and Lossy compression for many of those 'don't need forever' DNGs (coming from OM-1 mk2 ORF original RAW files) . Needless to say they don't render in Immich, which is a shame.

Who can we poke at adobe to get the licensing terms that we need? Do they have a team? I'll gladly chase....

@timbatog commented on GitHub (Dec 7, 2025): To add to the complexity of understanding DNGs (sorry!) I've gone for DNG v16 and Lossy compression for many of those 'don't need forever' DNGs (coming from OM-1 mk2 ORF original RAW files) . Needless to say they don't render in Immich, which is a shame. Who can we poke at adobe to get the licensing terms that we need? Do they have a team? I'll gladly chase....
Author
Owner

@PseudoResonance commented on GitHub (Dec 7, 2025):

To add to the complexity of understanding DNGs (sorry!) I've gone for DNG v16 and Lossy compression for many of those 'don't need forever' DNGs (coming from OM-1 mk2 ORF original RAW files) . Needless to say they don't render in Immich, which is a shame.

Who can we poke at adobe to get the licensing terms that we need? Do they have a team? I'll gladly chase....

Feel free to try... I emailed a bunch of legal-related addresses, called several support agents and asked around if anyone I knew had contacts, but still wasn't able to get in touch.... Presumably only the legal department could help though.

@PseudoResonance commented on GitHub (Dec 7, 2025): > To add to the complexity of understanding DNGs (sorry!) I've gone for DNG v16 and Lossy compression for many of those 'don't need forever' DNGs (coming from OM-1 mk2 ORF original RAW files) . Needless to say they don't render in Immich, which is a shame. > > Who can we poke at adobe to get the licensing terms that we need? Do they have a team? I'll gladly chase.... Feel free to try... I emailed a bunch of legal-related addresses, called several support agents and asked around if anyone I knew had contacts, but still wasn't able to get in touch.... Presumably only the legal department could help though.
Author
Owner

@CrazyWolf13 commented on GitHub (Jan 11, 2026):

Hi,
I've been following this thread since some time, as I have the same issue with raw images taken from my s25 ultra.

This was not only on immich, also on other Opensource Photo Editing Software, but today I noticed something strange in immich, it seemed like most of my .dng shots have now a working preview, although it's nearly compledtely dark, you can see the actual image, so I guess for raw shots from the samsung s25 ultra taken via Expert Raw App seem to be working, although it takes a long time to render them.

What I noticed just some days ago, that Proton Drive, which is also opensource seems to also render the S25 Ultra raw shots fine now, earlier this was not working, but since their new update they render, so maybe it's possible to look at how proton drive is rendering them? (Linking their sourcecode: https://github.com/ProtonDriveApps/android-drive)

@CrazyWolf13 commented on GitHub (Jan 11, 2026): Hi, I've been following this thread since some time, as I have the same issue with raw images taken from my s25 ultra. This was not only on immich, also on other Opensource Photo Editing Software, but today I noticed something strange in immich, it seemed like most of my .dng shots have now a working preview, although it's nearly compledtely dark, you can see the actual image, so I guess for raw shots from the samsung s25 ultra taken via Expert Raw App seem to be working, although it takes a long time to render them. What I noticed just some days ago, that Proton Drive, which is also opensource seems to also render the S25 Ultra raw shots fine now, earlier this was not working, but since their new update they render, so maybe it's possible to look at how proton drive is rendering them? (Linking their sourcecode: https://github.com/ProtonDriveApps/android-drive)
Author
Owner

@nobue987-commits commented on GitHub (Jan 26, 2026):

I have a similar issue here, RAW files shot on the S23+ (Expert RAW) didn't render at all until I enabled full size image geneartion. Sadly however even when I did the DNG files look really dark and greensish... Toggeling "Prefer embeded preview doesn't fix it. (I assume those raw files don't have a embeded preview?) It works well with my Fuji RAW files... Here are some sample Photos hosted on immich so you see how the issue looks and you can download them if it helps.

@nobue987-commits commented on GitHub (Jan 26, 2026): I have a similar issue here, RAW files shot on the S23+ (Expert RAW) didn't render at all until I enabled full size image geneartion. Sadly however even when I did the DNG files look really dark and greensish... Toggeling "Prefer embeded preview doesn't fix it. (I assume those raw files don't have a embeded preview?) It works well with my Fuji RAW files... [Here](https://immich.noahbuehler.com/share/drnfRbSz9UWqWz-D28wy7Zwg3vAXJkEnRbFw2DXyg5V4cEQm6F1-vdOBiaQg7NWGGxo) are some sample Photos hosted on immich so you see how the issue looks and you can download them if it helps.
Author
Owner

@PseudoResonance commented on GitHub (Feb 7, 2026):

What I noticed just some days ago, that Proton Drive, which is also opensource seems to also render the S25 Ultra raw shots fine now, earlier this was not working, but since their new update they render, so maybe it's possible to look at how proton drive is rendering them? (Linking their sourcecode: https://github.com/ProtonDriveApps/android-drive)

I glanced through it and don't see anything particularly interesting. I've never used the app, so I don't really know where to look, but this area appears to be responsible for drawing the images? It's just using Android APIs though, which doesn't help on iOS or browsers.

@PseudoResonance commented on GitHub (Feb 7, 2026): > What I noticed just some days ago, that Proton Drive, which is also opensource seems to also render the S25 Ultra raw shots fine now, earlier this was not working, but since their new update they render, so maybe it's possible to look at how proton drive is rendering them? (Linking their sourcecode: https://github.com/ProtonDriveApps/android-drive) I glanced through it and don't see anything particularly interesting. I've never used the app, so I don't really know where to look, but [this area appears to be responsible for drawing the images](https://github.com/ProtonDriveApps/android-drive/blob/d3e42bb210ae5aaf15ed54b9ced16554f1aae814/photos/presentation/src/main/kotlin/me/proton/android/drive/photos/presentation/component/MediaItem.kt#L115)? It's just using Android APIs though, which doesn't help on iOS or browsers.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/immich#3964
No description provided.