summaryrefslogtreecommitdiffstats
path: root/images/marks/rotate.php
blob: 4626149b803b70d3d1aa1eb911e75951899101d5 (plain)
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
61
62
63
64
65
66
67
68
<?php
// File and rotation
$rotate = $_GET['r'] * 1;
//Probably not the best syntax.
if (!is_int($rotate) OR !($rotate > 0) OR !($rotate < 4)) exit;

//Example value: 'OffsetStripesDiagonal_B.png';

$emblem = $_GET['emblem'];
$degrees = $_GET['r'] * 90;

// Content type
header('Content-type: image/jpeg');
//TODO Update Cache
header("Cache-Control: private, max-age=10800, pre-check=10800");
header("Pragma: private");
header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));

$simage = @imagecreatefrompng($emblem);
if(!$simage) {
	exit;
}

$background = imagecolorallocate($simage, 0, 0, 0);
//$simage = rotateMaintain($simage, $degrees, $background);
$simage = imagerotate($simage, $degrees, 0);
// removing the black from the placeholder
imagecolortransparent($simage, $background);
// turning off alpha blending (to ensure alpha channel information 
// is preserved, rather than removed (blending with the rest of the 
// image in the form of black))
imagealphablending($simage, false);
// turning on alpha channel information saving (to ensure the full range 
// of transparency is preserved)
imagesavealpha($simage, true);
imagepng($simage);



//Couldn't do this and maintain transparency ?
function rotateMaintain($img1, $angle, $background) {
	$width_before = imagesx($img1);
	
	$height_before = imagesy($img1);
	$img1 = imagerotate($img1, $angle, $background);

	//but imagerotate scales, so we clip to the original size
	$img2 = @imagecreatetruecolor($width_before, $height_before);
	$new_width = imagesx($img1); // whese dimensions are
	$new_height = imagesy($img1);// the scaled ones (by imagerotate)
	imagecopyresampled(
		$img2, $img1,
		0, 0,
		($new_width-$width_before)/2,
		($new_height-$height_before)/2,
		$width_before,
		$height_before,
		$width_before,
		$height_before
	);
	return $img2;
}





?>