<?php
function create_border($pic, $border_size = 10, $border_color = 'ff00ff')
{
	$use_trans_border = 1;
	$trans_color = 'ffbbff';
	$arr = split("[/\\.]",strtolower($pic));
	$n = count($arr)-1;
	$extension = $arr[$n];
	switch ($extension)
	{
		case 'jpeg':
		case 'jpg':
			$im = imagecreatefromjpeg($pic);
			break;
		case 'png':
			$im = imagecreatefrompng($pic);
			break;
		default:
			return false;
	}
	$size = getimagesize($pic);
	
	$im_corner = imagecreatetruecolor($border_size, $border_size);
	$col_bg = imagecolorallocate($im_corner, hexdec(substr($border_color, 0, 2)), hexdec(substr($border_color, 2, 2)), hexdec(substr($border_color, 4, 2)));
	$col_trans = imagecolorallocate($im_corner, hexdec(substr($trans_color, 0, 2)), hexdec(substr($trans_color, 2, 2)), hexdec(substr($trans_color, 4, 2)));

	imagefilledrectangle($im_corner, 0, 0, $border_size, $border_size, $col_bg);
	imagefilledellipse($im_corner, $border_size, $border_size, $border_size*2, $border_size*2, $col_trans);
	
	imagecolortransparent($im_corner, $col_trans);
	imagecopymerge($im, $im_corner, 0, 0, 0, 0, $border_size, $border_size,100);
	$rotate = imagerotate($im_corner, 180, 0);
	imagecolortransparent($rotate, $col_trans);
	imagecopymerge($im, $rotate, $size[0]-$border_size, $size[1]-$border_size, 0, 0, $border_size, $border_size,100);
	$rotate = imagerotate($rotate, 90, 0);
	imagecolortransparent($rotate, $col_trans);
	imagecopymerge($im, $rotate, $size[0]-$border_size, 0, 0, 0, $border_size, $border_size,100);
	$rotate = imagerotate($rotate, 180, 0);
	imagecolortransparent($rotate, $col_trans);
	imagecopymerge($im, $rotate, 0, $size[1]-$border_size, 0, 0, $border_size, $border_size,100);
	if ($use_trans_border)
	{
		imagecolortransparent($im, $col_bg);
	}
	imagePNG($im);
	
	imagedestroy($im);
	imagedestroy($rotate);
}
header("Content-type: image/png");
// pic001.jpg (arquivo .JPG ou .PNG, XX tamanho da borda)
create_border('pic001.jpg', 40);
?>