File: 256_Imagick_exportImagePixels_basic.phpt

package info (click to toggle)
php-imagick 3.4.4%2Bphp8.0%2B3.4.4-2%2Bdeb11u2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 6,776 kB
  • sloc: ansic: 34,120; xml: 842; php: 188; pascal: 85; makefile: 2
file content (60 lines) | stat: -rw-r--r-- 1,689 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
--TEST--
Test Imagick, Imagick::exportImagePixels
--SKIPIF--
<?php
$imageMagickRequiredVersion=0x687;
require_once(dirname(__FILE__) . '/skipif.inc');
?>
--FILE--
<?php

$imagick = new \Imagick();
$imagick->newPseudoImage(256, 256, "gradient:black-white");

$pixelTypes = array(
	Imagick::PIXEL_CHAR => function($v) { return $v / 255; } ,
	Imagick::PIXEL_DOUBLE => function($v) { return $v; } ,
	Imagick::PIXEL_FLOAT => function($v) { return $v; } ,
	Imagick::PIXEL_LONG => function($v) { return $v / 4294967295; },
	Imagick::PIXEL_QUANTUM => function($v) { return $v / Imagick::getQuantum(); } ,
	Imagick::PIXEL_SHORT => function($v) { return $v / 65535; } ,

	// This is not supported as ints close to 64bits are weird in PHP
	// Imagick::PIXEL_LONGLONG => function($v) { return $v / (2 << 64 -1 ); } ,
);

$v = Imagick::getVersion();
if ($v['versionNumber'] < 0x700) {
	//This test will probably fail on 32bit platforms. If you see this please
	//submit a PR that fixes the problem.
	$pixelTypes[Imagick::PIXEL_INTEGER] =  function($v) { return $v / 4294967295; }; 
}



foreach ($pixelTypes as $pixelType => $scaleFn) {
	try {
		$pixels = $imagick->exportImagePixels(0, 0, 1, 256, "R", $pixelType);
	
		for ($i = 0; $i<10 ; $i++) {
			$expectedValue = $i / 255;
			$scaledActualValue = $scaleFn($pixels[$i]);
	
			if (abs($expectedValue - $scaledActualValue) > 0.0001) {
				echo "pixel type $pixelType has incorrect values. They should be 0/255, 1/255, 2/255... 255/255 or the scaled equivalent\n";
				var_dump($pixels);
				break;
			}
		}
	}
	catch (\Exception $e) {
		echo "Exception caught for pixelType: $pixelType ";
		echo $e->getMessage();
	}
}


echo "Ok";
?>
--EXPECTF--
Ok