Urgent.News

What's breaking now, across thousands of outlets.

Tech

Three color checkpoints for HEIC to JPEG, and why sips -g profile isn't one

Why do some HEIC-to-JPEG conversions come out washed out? The measurements I ran on 2026-11-06 pointed to three checks rather than to a library. Is there an ICC profile after decode, does the encoder carry it or convert the pixels, and what does your inspector actually read. The third is the easiest to get wrong. Scope first. Three HEIC files were encoded with macOS sips from a synthetic chart…

Three checks, not a library, cause washed-out HEIC-to-JPEG conversions. An ICC profile either needs to be read, carried by the encoder, or converted by the pixels, and this is often where things go wrong. Three HEIC files, encoded with macOS sips from synthetic and CC0 Wikimedia Commons photos, were tested. Both used Display P3 color space, but the source material was not iPhone originals, lacking HDR gain map, 10-bit, or nclx.

One Mac, single runs, Pillow 11.3, sharp 0.34.5, Chromium 149, and WebKit 26.5 were used. Color differences were measured using CIEDE2000 on patches, with a threshold below 1 being hard to detect and 2 to 3 visible side by side. The decoder determines the format; after decode, you either have P3 numbers with a profile, P3 numbers without a profile, or pixels already converted to sRGB.

Mixing these formats can cause washed-out results. Browser canvases convert at decode time, and Chromium 149 couldn't decode HEIC, converting to sRGB instead. sharp 0.34.5 read the metadata correctly but failed on the pixels due to a lack of a built-in decoding support for HEIC. The encoder either carries the profile or converts the pixels, and Pillow's plain save() writes the JPEG without the ICC, leaving the numbers unchanged.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Kubernetes DRA Extended Resources: GPUs Without Device Plugins

Originally published on kuryzhev.cloud A platform team has 200 training manifests that all say nvidia.com/gpu: 1 . They also want per-model GPU selection, MIG slices and shared devices, which the…

  • Kubernetes v1.37 introduces DRA extended resources for GPU support without device plugins.
  • DRA extended resources replace opaque integers with structured data for scheduler device allocation.

Your Agent's Command Printed Nothing for 2 Minutes. stdout Wasn't a Terminal

Book: AI That Acts The series: AI in TypeScript — 5 books, from your first LLM call to agents in production — all five here My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude…

  • Claude Code's Bash tool streams command output to a file
  • Two-minute timeout moves command to background
  • Block-buffered commands may have empty output file

The Matrix Blue-Pill Syndrome

What if an artificial intelligence, while trying to protect us from danger, unintentionally helped bring that very danger about? It's been a while since I last wrote something.

  • AI amplifying misinformation poses dangers
  • Feedback loops turn minor errors into distortions
  • AI-generated fabrications hard to distinguish

Pillow fades a P3 photo, sharp clips it: picking the JPEG default per target

The same Display P3 image went through Pillow 11.3 and sharp 0.34.5 with no color options set, and the two JPEGs went wrong in opposite directions. Pillow's copy came out washed out.

  • Pillow and sharp produce different results on P3 images
  • Pillow retains P3 numbers but loses profile
  • Sharp converts to sRGB, dropping profile

More from Saturday 7 November →