PHP,628字节
为方便起见添加了一些换行符。
$c=$z.create;$h=$c($w=250,$w);$i=$c(530,533);$a=$z.colorallocate;$a($h,$f=255,$f,$f);$a($i,$f,$f,$f);$a($h,229,229,229);$a($h,153,153,$f);
$p=$z.filledpolygon;$p($h,$o=[0,64,0,0,141,141,],3,2);$p($h,[64,0]+$o,3,1);$p($h,$o=[0,$w,0,0,57,57],3,1);$p($h,[$w,0]+$o,3,2);
$c=$z.copy;$r=$z.rotate;$c($i,$h,263,267,0,0,$w,$w);$c($i,$r($h,90,0),263,17,0,0,$w,$w);$c($i,$r($h,180,0),13,17,0,0,$w,$w);$c($i,$r($h,270,0),13,267,0,0,$w,$w);
$s=$z.string;$s($i,5,259,0,N,3);$s($i,5,259,518,S,3);$s($i,5,0,259,W,3);$s($i,5,518,259,E,3);$s($i,5,106,108,NW,3);$s($i,5,406,108,NE,3);$s($i,5,406,410,SE,3);$s($i,5,106,410,SW,3);
imagepng($i,"n.png");
用运行-r
。n.png
用图像创建文件;单位是2像素。
我必须承认,我是通过反复试验发现风的坐标的,它们可能有点偏离。即将进行计算;但我保证:它们不会更改字节数。
现在挖掘出我的三角学并为imagecopy
... 而苦苦挣扎让我感到很开心!
在打高尔夫球方面:花样并不多;但是这几个节省了很多:
- 将函数名称和两个值分配给变量可能会产生最大的影响。
在替换函数名称之前,我什至没有数。
- 数组
+
运算符的魔力提供了42个字节。
- 写入文件而不是将图像发送到浏览器节省了27个字节。
- 将分配移到变量的首次使用可以得到更多信息。
分解
// create images and allocate colors
$c=imagecreate;
$h=$c($w=250,$w); // helper image - just as large as needed or imagecopy will screw up
$i=$c(530,533); // main image
$a=imagecolorallocate;
$a($h,$f=255,$f,$f); // white is 0
$a($i,$f,$f,$f); // must be assigned to both images
$a($h,229,229,229); // grey is 1
$a($h,153,153,$f); // purple is 2
// draw the south-east quadrant
$p=imagefilledpolygon;
// small triangle purple first
$p($h,$o=[
// point 3: 0.8*e *2
0,64,
// point 1: center
0,0,
// point 2: a=45 degrees, d=200 units
141,141,// d/sqrt(2)=141.421356
],3,2);
// small triangle grey
$p($h,[64,0]+$o,3,1);
// large triangles
$p($h,$o=[
0,$w,
0,0,
57,57 // e*sqrt(2)=56.5685424949
],3,1);
$p($h,[$w,0]+$o,3,2);
// create rose
$c=imagecopy;
$r=imagerotate;
$c($i,$h,263,267,0,0,$w,$w); // copy quadrant to main image (SE)
$c($i,$r($h,90,0),263,17,0,0,$w,$w); // rotate quadrant and copy again (NE)
$c($i,$r($h,180,0),13,17,0,0,$w,$w); // rotate and copy again (NW)
$c($i,$r($h,270,0),13,267,0,0,$w,$w);// rotate and copy a last time (SW)
// add circle
#imageellipse($i,263,267,500,500,2); // grey is now 2: imagecopy shuffled colors
// add names
$s=imagestring;
$s($i,5,259, 0,N,3); // 5 is actually the largest internal font PHP provides
$s($i,5,259,518,S,3); // unassigned colors are black
$s($i,5, 0,259,W,3);
$s($i,5,518,259,E,3);
$s($i,5,106,108,NW,3);
$s($i,5,406,108,NE,3);
$s($i,5,406,410,SE,3);
$s($i,5,106,410,SW,3);
// output
#header("Content-Type:image/png");
#imagepng($i);
imagepng($i,"n.png");