1
0
mirror of https://github.com/mosbth/cimage.git synced 2025-08-01 22:00:31 +02:00

Added conversion to sRGB using option ?srgb. #120.

This commit is contained in:
Mikael Roos
2015-10-24 15:43:56 +02:00
parent aedce7021f
commit 7a98a44dd4
7 changed files with 38 additions and 15 deletions

View File

@@ -2404,12 +2404,13 @@ class CImage
* @param string $src of image. * @param string $src of image.
* @param string $dir as base directory where images are. * @param string $dir as base directory where images are.
* @param string $cache as base directory where to store images. * @param string $cache as base directory where to store images.
* @param string $iccFile filename of colorprofile.
* @param boolean $useCache or not, default to always use cache. * @param boolean $useCache or not, default to always use cache.
* *
* @return string | boolean false if no conversion else the converted * @return string | boolean false if no conversion else the converted
* filename. * filename.
*/ */
public function convert2sRGBColorSpace($src, $dir, $cache, $useCache = true) public function convert2sRGBColorSpace($src, $dir, $cache, $iccFile, $useCache = true)
{ {
if ($this->verbose) { if ($this->verbose) {
$this->log("# Converting image to sRGB colorspace."); $this->log("# Converting image to sRGB colorspace.");
@@ -2450,10 +2451,8 @@ class CImage
if ($colorspace != Imagick::COLORSPACE_SRGB || $hasICCProfile) { if ($colorspace != Imagick::COLORSPACE_SRGB || $hasICCProfile) {
$this->log(" Converting to sRGB."); $this->log(" Converting to sRGB.");
/* $sRGBicc = file_get_contents($iccFile);
$icc_rgb = file_get_contents('/path/to/icc/SomeRGBProfile.icc'); $image->profileImage('icc', $sRGBicc);
$image->profileImage('icc', $icc_rgb);
*/
$image->transformImageColorspace(Imagick::COLORSPACE_SRGB); $image->transformImageColorspace(Imagick::COLORSPACE_SRGB);
$image->writeImage($this->cacheFileName); $image->writeImage($this->cacheFileName);

View File

@@ -5,10 +5,10 @@ Revision history
[![Build Status](https://scrutinizer-ci.com/g/mosbth/cimage/badges/build.png?b=master)](https://scrutinizer-ci.com/g/mosbth/cimage/build-status/master) [![Build Status](https://scrutinizer-ci.com/g/mosbth/cimage/badges/build.png?b=master)](https://scrutinizer-ci.com/g/mosbth/cimage/build-status/master)
v0.7.7* (2015-10-21) v0.7.7* (2015-10-24)
------------------------------------- -------------------------------------
* Added conversion to sRGB using option `?srgb`, partly working. #120. * Added conversion to sRGB using option `?srgb`. #120.
* Change path in `webroot/htaccess` to make it work in current environment. * Change path in `webroot/htaccess` to make it work in current environment.

Binary file not shown.

View File

@@ -7,7 +7,8 @@ class CImageSRGBTest extends \PHPUnit_Framework_TestCase
{ {
private $srgbDir = "srgb"; private $srgbDir = "srgb";
private $cache; private $cache;
private $srgbColorProfile = __DIR__ . '/../icc/sRGB_IEC61966-2-1_black_scaled.icc';
/** /**
@@ -37,8 +38,9 @@ class CImageSRGBTest extends \PHPUnit_Framework_TestCase
$filename = $img->convert2sRGBColorSpace( $filename = $img->convert2sRGBColorSpace(
'car.png', 'car.png',
IMAGE_PATH, IMAGE_PATH,
$this->cache $this->cache,
$this->srgbColorProfile
); );
if (class_exists("Imagick")) { if (class_exists("Imagick")) {
@@ -62,7 +64,8 @@ class CImageSRGBTest extends \PHPUnit_Framework_TestCase
$filename = $img->convert2sRGBColorSpace( $filename = $img->convert2sRGBColorSpace(
'car.jpg', 'car.jpg',
IMAGE_PATH, IMAGE_PATH,
$this->cache $this->cache,
$this->srgbColorProfile
); );
$this->assertFalse($filename); $this->assertFalse($filename);

View File

@@ -8,7 +8,7 @@
* *
*/ */
$version = "v0.7.7* (2015-10-21)"; $version = "v0.7.7* (2015-10-24)";
@@ -976,10 +976,12 @@ if ($dummyImage === true) {
* Prepare a sRGB version of the image and use it as source image. * Prepare a sRGB version of the image and use it as source image.
*/ */
$srgbDirName = "/srgb"; $srgbDirName = "/srgb";
$srgbDir = getConfig('srgb_dir', $cachePath . $srgbDirName); $srgbDir = getConfig('srgb_dir', $cachePath . $srgbDirName);
$srgb = getDefined('srgb', true, null); $srgbDefault = getConfig('srgb_default', false);
$srgbColorProfile = getConfig('srgb_colorprofile', __DIR__ . '/../icc/sRGB_IEC61966-2-1_black_scaled.icc');
$srgb = getDefined('srgb', true, null);
if ($srgb) { if ($srgb || $srgbDefault) {
if (!is_writable($srgbDir)) { if (!is_writable($srgbDir)) {
if (is_writable($cachePath)) { if (is_writable($cachePath)) {
@@ -991,6 +993,7 @@ if ($srgb) {
$srcImage, $srcImage,
$imagePath, $imagePath,
$srgbDir, $srgbDir,
$srgbColorProfile,
$useCache $useCache
); );

BIN
webroot/img/hamburger.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 KiB

View File

@@ -122,6 +122,24 @@ return array(
/**
* Convert the image to srgb before processing. Saves the converted
* image in the sub cache dir. This option is default false but can
* be changed to default true to do this conversion for all images.
* This option requires PHP extension imagick and will silently fail
* if that is not installed.
*
* Default value:
* srgb_dir: $cachePath/srgb
* srgb_default: false
* srgb_colorprofile: __DIR__ . '/../icc/sRGB_IEC61966-2-1_black_scaled.icc'
*/
//'srgb_dir' => __DIR__ . '/../cache/srgb/',
//'srgb_default' => false,
//'srgb_colorprofile' => __DIR__ . '/../icc/sRGB_IEC61966-2-1_black_scaled.icc',
/** /**
* A function (hook) can be called after img.php has processed all * A function (hook) can be called after img.php has processed all
* configuration options and before processing the image using CImage. * configuration options and before processing the image using CImage.