Code: Select all
<?
$i = imagecreatefromjpeg("xxx.jpg");
$i = imageClipCorners($i);
header("Content-type: image/jpeg");
imagejpeg($i);
//Corner rounding function.
function imageClipCorners($i,$xrad=20,$yrad=20,$r=255,$g=255,$b=255) {
$i_x = imagesx($i); $i_y = imagesy($i);
$gdCornerSource = imagecreatefromstring(base64_decode(cornerpng()));
$gdCorner_x = imagesx($gdCornerSource);
$gdCorner_y = imagesy($gdCornerSource);
$gdCorner1 = imagecreatefromstring(base64_decode(blankpng()));
$gdCorner2 = imagecreatefromstring(base64_decode(blankpng()));
$gdCorner3 = imagecreatefromstring(base64_decode(blankpng()));
$gdCorner4 = imagecreatefromstring(base64_decode(blankpng()));
for ($y=0;$y<imagesy($gdCornerSource);$y++) {
for ($x=0;$x<imagesx($gdCornerSource);$x++) {
$rgb = imagecolorat($gdCornerSource,$x,$y);
$a = ($rgb >> 24) & 0xFF;
$colour = imagecolorallocatealpha($gdCorner1,$r,$g,$b,$a);
imagesetpixel($gdCorner1,$x,$y,$colour);
$colour = imagecolorallocatealpha($gdCorner2,$r,$g,$b,$a);
imagesetpixel($gdCorner2,$gdCorner_x-$x,$y,$colour);
$colour = imagecolorallocatealpha($gdCorner3,$r,$g,$b,$a);
imagesetpixel($gdCorner3,$gdCorner_x-$x,$gdCorner_y-$y,$colour);
$colour = imagecolorallocatealpha($gdCorner4,$r,$g,$b,$a);
imagesetpixel($gdCorner4,$x,$gdCorner_y-$y,$colour);
}
}
imagecopyresampled($i,$gdCorner1,0,0,0,0,$xrad,$yrad,$gdCorner_x,$gdCorner_y);
imagecopyresampled($i,$gdCorner2,$i_x-$xrad,0,0,0,$xrad,$yrad,$gdCorner_x,$gdCorner_y);
imagecopyresampled($i,$gdCorner3,$i_x-$xrad,$i_y-$yrad,0,0,$xrad,$yrad,$gdCorner_x,$gdCorner_y);
imagecopyresampled($i,$gdCorner4,0,$i_y-$yrad,0,0,$xrad,$yrad,$gdCorner_x,$gdCorner_y);
return $i;
}
//Base64 encoded corner PNG image
function cornerpng() {
$c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m";
$c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIBSURBVHjaYmRgYPjPMHDgOhTfAuJ7QPwYiJ8D8Rsg";
$c .= "/gjE3wECiIXODnoIxEeB+AQQnwLic/////+NTwNAANHDgaCQ2AnEu4B4L9BBD0jRDBBAtHTgHSDeAMSb";
$c .= "gI46TK4hAAFECwfeB+IVQLwK6LALlBoGEEAM0ExCDfwdiGcAsRXQYQzUwgABRC0HHgTiGGo6DIYBAohS";
$c .= "B/4D4slArEkLx4EwQABR4kBQWsunlcNgGCCAyHXgSSAOobXjQBgggMhx4G4gdqSH40AYIIBIdeB2ILag";
$c .= "l+NAGCCAGEgMObo6DoQBAoiBhDTnSG/HgTBAADEQmVtDBsJxIAwQQExE1DITgArXDFR7DCCACIXg5IEK";
$c .= "ORgGCCB8IXgIiKcxDDAACCBcDvwBxLOBPrg+0A4ECCBcDlwIdNwShkEAAAKICUd7bhHDIAEAAYTNgSuA";
$c .= "oXdssDgQIICYsDTTVzEMIgAQQOgO3ECtZjq1AEAAMaH1vjYxDDIAEEDIDtxJSe+LVgAggJAduIthEAKA";
$c .= "AGJC6vHvHYwOBAggmAOPktrjpxcACCCYA08wDFIAEEAwB54arA4ECCAm6PDXucHqQIAAAjuQ0BDYQAKA";
$c .= "AGKCDh4OWgAQQEzQkc1BCwACiAk67DpoAUAAMUHHhActAAggJuiA9aAFAAHEBG3FDFoAEEBM0JHRQQsA";
$c .= "AgwAlTI79UaGSUQAAAAASUVORK5CYII=";
return $c;
}
//Base64 encoded 127 alpha PNG image
function blankpng() {
$c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m";
$c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg";
$c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN";
$c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ";
$c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA";
$c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJVEAAAAASUVORK5CYII=";
return $c;
}
?>