I’ve managed to further test this with Imagick:
The left half of the image was processed with Imagick and the sRGB_IEC61966-2-1_no_black_scaling.icc
color profile, the right half has no color profile associated and shows exactly the same if processed with Imagick or GD; here is the code I used:
header('Content-type: image/jpeg');
$image = new Imagick('/path/to/DSC07275.jpg');
if (($srgb = file_get_contents('http://www.color.org/sRGB_IEC61966-2-1_no_black_scaling.icc')) !== false)
{
$image->profileImage('icc', $srgb);
$image->setImageColorSpace(Imagick::COLORSPACE_SRGB);
}
$image->thumbnailImage(1024, 0);
echo $image;
Here is a comparison of the several sRGB profiles available on the color.org website:
It seems to me that the third profile produces the most vivid results, other than that I have no idea how one would make a definitive choice.
EDIT: Apparently, Imagick comes with a bundled sRGB profile, so you don’t need to download the one from the Image Color Consortium website, the following code should handle all scenarios:
header('Content-type: image/jpeg');
$image = new Imagick('/path/to/DSC07275.jpg');
$version = $image->getVersion();
$profile="http://www.color.org/sRGB_IEC61966-2-1_no_black_scaling.icc";
if ((is_array($version) === true) && (array_key_exists('versionString', $version) === true))
{
$version = preg_replace('~ImageMagick ([^-]*).*~', '$1', $version['versionString']);
if (is_file(sprintf('/usr/share/ImageMagick-%s/config/sRGB.icm', $version)) === true)
{
$profile = sprintf('/usr/share/ImageMagick-%s/config/sRGB.icm', $version);
}
}
if (($srgb = file_get_contents($profile)) !== false)
{
$image->profileImage('icc', $srgb);
$image->setImageColorSpace(Imagick::COLORSPACE_SRGB);
}
$image->thumbnailImage(1024, 0);
echo $image;