{
  "id": 18666379,
  "title": "Pillow fades a P3 photo, sharp clips it: picking the JPEG default per target",
  "url": "https://urgent.news/2026/11/07/pillow-fades-a-p3-photo-sharp-clips-it-picking-the-jpeg-default-per",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-07T08:02:58.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/iterandum/pillow-fades-a-p3-photo-sharp-clips-it-picking-the-jpeg-default-per-target-1bg9"
  },
  "original_language": "en",
  "account": "When comparing Pillow 11.3 and sharp 0.34.5 when given an image in Display P3 color space, the two libraries produced different results. Pillow's output was washed out, while sharp's output was accurate for everyday colors but flattened the most saturated ones. Neither library had a bug – they simply defaulted to different color targets, and an image pipeline follows that target unless explicitly overridden. The test used two HEIC files from macOS sips, a synthetic color chart, and a CC0 photo from Wikimedia Commons, all encoded in Display P3 with a 536-byte profile. Both libraries decoded the JPEG from a PNG that carried the P3 pixel values and profile. Pillow kept the P3 numbers but lost the profile, while sharp converted to sRGB and dropped the tag. Keeping the P3 profile as the default results in less color shift and smaller file sizes. However, if the JPEG might be ignored or stripped of profiles by the destination, converting to sRGB is a safer choice, even if it incurs a slight color shift.",
  "summary": "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. sharp's copy was right for everyday colors and quietly flattened the most saturated ones. Neither library has a bug here. Each one simply defaults to a different target, and an image pipeline inherits that target…",
  "key_points": [
    "Pillow and sharp produce different results on P3 images",
    "Pillow retains P3 numbers but loses profile",
    "Sharp converts to sRGB, dropping profile"
  ],
  "editors_take": "The divergent handling of color profiles between these libraries forces developers to choose between preserving color accuracy through P3 profiles or prioritizing compatibility via sRGB conversion.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}