0
$\begingroup$

When I render Image in Blender 2.8, the final result in the viewport are really beautiful with good color, contrast, etc...

When I save the render in JPEG, TIFF, PNG, etc... the result are not the same, less contrast, less color, etc...

How can I save my images with the same result if possible?

Screenshot render in Blender:

enter image description here

The saved image:

enter image description here

$\endgroup$
2
  • $\begingroup$ How are you viewing the result? What computer are you using, a mac? If you load the rendered image into blender's image editor does it look the same? $\endgroup$
    – susu
    Jun 18 '20 at 17:42
  • $\begingroup$ I have the same problem (on MacBook Pro with P3 display). The image files look horrible. I'm surprised Blender doesn't handle this. $\endgroup$
    – Rob N
    Apr 5 at 19:36
2
$\begingroup$

Probable cause of your problem is your display ICC color profile or using wide-gamut monitor. You can check what profile you are using in your OS settings (I won't go into specifics because it's system dependant).

Blender does not respect your monitor profile, nor profiles embedded in image files. When you prepare image in Blender viewport you look at it in your display color space but Blender saves it with regular sRGB. It also happens when you use wide-gamut monitor which can display more colors than sRGB color space has. For example (not factual) 0.8 srgb red might look like 1.0 srgb red on such screen, so when you open it in a program that can actually handle profiles it will look like 0.8 srgb and not Blender's over-saturated red.

If you use wide-gamut monitor with default sRGB profile you may want to at least find the profile delivered by its manufacturer, though propper color calibration is the best.

When you know the path to your ICC/ICM profile, you can embed it into your image so other programs will know that your 0.8 red should be displayed as 1.0 red. You can also convert it to the sRGB space, though you'll loose colors displayable with wide-gamut screen.

You can use other graphical packages to manage color profiles (like Photoshop, probably Krita and Gimp, though I didn't have much luck...), ImageMagick or a Python script with PIL (PNG and JPEG only). In Python it is fairly easy.

To attach profile:

from PIL import Image, ImageCms
img = Image.open(image_filepath)
display_profile = ImageCms.getOpenProfile(display_profile_path)
img.save(filepath, icc_profile=display_profile.tobytes())

To convert:

img = Image.open(image_filepath)
display_profile = ImageCms.getOpenProfile(display_profile_path)
srgb_profile = ImageCms.getOpenProfile(rgb_profile_path)
ImageCms.profileToProfile(img, display_profile, srgb_profile, inPlace=True)
img.save(filepath, icc_profile=display_profile.tobytes())

If you want Blender to handle it all for convenience sake, use Styriam ICC Image Compressor addon. It can embed/convert profiles in stills and animation frames.

$\endgroup$
3
  • $\begingroup$ Good answer, except for the part about “losing colours”; rendering has assumed primaries internally, and those must be properly rendered through a display transform or else they are flatly wrong. There’s no colours to “lose”, only completely broken output during rendering. There is always only one proper transform for output, after a rendering transform, to a particular display’s colourimetry. $\endgroup$
    – troy_s
    Oct 29 '20 at 5:25
  • $\begingroup$ troy_s, I'm not sure I get what you mean. When I save two images, one with display profile embedded and the second one converted from display profile to srgb profile, they look different on wide-gamut screen but are identical on a standard srgb screen. I assumed that colors exceeding srgb space are lost during the aforementioned conversion. $\endgroup$
    – theres1
    Oct 29 '20 at 17:36
  • $\begingroup$ All renders from Blender are BT.709 primaries based. The reason the rendering is screwed is because Blended default does not support Display P3 displays, and all renders are broken as a result when viewing them on Display P3 displays. The Filmic config at my GitHub does indeed support them, but Blender default is hosed. $\endgroup$
    – troy_s
    Oct 30 '20 at 6:07
0
$\begingroup$

It can be a color management issue.

Under the render tab, bottom panel, you will see "Color Management". Check your settings there. This settings are usually global, so whatever you see in the viewport, it should be the same in the render. However I suspected that.

Another possibility, you might have done some tweaks in the compositor and then forgot about them. Check your compositing settings.

Final hint: Delete everything in the scene and simply add a cube and a plane. Check if the issue persists. If it does, then you can share your .blend file. This way we can investigate the problem, without stealing your models :) ...

EDIT: another thought: You might be saving your file with a low color-depth. Check out output in the "Output Properties" and make sure you select a good option such as "JPG" or "PNG"

enter image description here

$\endgroup$
2
  • $\begingroup$ Thank you for your help, that's really apreciate! I try many output option and it's the same result, nothing change. But for now i do a color correction in adobe lightroom to fix my problem. $\endgroup$
    – Benoit
    Jun 25 '20 at 13:35
  • $\begingroup$ No problem, thanks for the feedback. It is super interesting to learn that the problem is not none of the ones I told. There is always so much to learn! :) good luck w/ your project. $\endgroup$
    – hrkucuk
    Jun 25 '20 at 18:23
0
$\begingroup$

Blender does not add a color profile when saving an image. When you see the rendered image in Blender, you're using the monitor color profile to view an sRGB image. When you open a rendered image in another application like Finder, Photoshop, etc. the image uses a default sRGB color profile so the conversion step from display to sRGB gets skipped.

You can correct this by assigning a display color profile like "Display P3" to your image and then converting it "sRGB IEC61966-2.1".

Photoshop:

  1. Open the image
  2. From main menu -> Edit / Assign Profile
  3. Select Profile Option and Display P3 from dropdown
  4. From main menu -> Edit / Convert to Profile
  5. Choose "sRGB IEC61966-2.1" for destination Space Profile
  6. From main menu -> File / Save As

photoshop assign color profile

photoshop convert color profile

Retrobatch

Retrobatch is an image manipulation tool that uses nodes instead of layers. Great for automating image edits in a user friendly way. This option requires Retrobatch Pro to get access to the Color Profile node.

Nodes:

  1. Read Individual Files
  2. Change Color Profile - Display P3 - uncheck match and modify pixels
  3. Change Color Profile - sRGB IEC61966-2.1 - check match and modify pixels
  4. Write Images

Retrobatch Node Setup

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.