このスキンテンプレートをご覧くださいhttp://www.minecraftwiki.net/images/5/54/Skintemplate.png
それに基づいて、地域は次のようになります。
head x8 y8 w8 h8
body front x20 y20 w8 h12
arm front x44 y20 w4 h12
leg front x4 y20 w4 h12
左右をミラーリングするには、腕と脚のセクションを反転する必要がある場合があります。
header('Content-Type: image/png');
$scale = $size / 16;
$canvas = imagecreatetruecolor(16*$scale, 32*$scale);
$image = imagecreatefrompng($this->custom_skin($username));
imagealphablending($canvas, false);
imagesavealpha($canvas,true);
$transparent = imagecolorallocatealpha($canvas, 255, 255, 255, 127);
imagefilledrectangle($canvas, 0, 0, 16*$scale, 32*$scale, $transparent);
imagecopyresized($canvas, $image, 4*$scale, 0*$scale, 8, 8, 8*$scale, 8*$scale, 8, 8); //head
imagecopyresized($canvas, $image, 4*$scale, 8*$scale, 20, 20, 8*$scale, 12*$scale, 8, 12); //body
imagecopyresized($canvas, $image, 0*$scale, 8*$scale, 44, 20, 4*$scale, 12*$scale, 4, 12); //arm left
imagecopyresampled($canvas, $image, 12*$scale, 8*$scale, 47, 20, 4*$scale, 12*$scale, -4, 12); //arm right (flipped)
imagecopyresized($canvas, $image, 4*$scale, 20*$scale, 4, 20, 4*$scale, 12*$scale, 4, 12); //leg left
imagecopyresampled($canvas, $image, 8*$scale, 20*$scale, 7, 20, 4*$scale, 12*$scale, -4, 12); //leg right (flipped)
return imagepng($canvas);
上記は単なる記憶からのものですが、それはあなたを正しい方向に向けるべきです。この場合、補間を避けたいので、アップスケーリング時にimagecopyresampledを使用しないでください。