PHP (ไม่มี SVG), 628 597 ไบต์
ขอบคุณAsksAnywayสำหรับทางลัดที่ดีสำหรับฟังก์ชั่น (เช่น$c = print; $c('Hello world!');
)
<?php header('Content-type:image/png');$h=$_GET['h'];$i=imagecreatetruecolor($h*1.1,$h*1.1);$c=imagecolorallocate;$b=$c($i,0,0,0);$w=$c($i,255,255,255);imagefill($i,0,0,$w);$l=$h*.7;$t=$h*.55;$u=$h/12;$e=imagefilledellipse;$e($i,$l,$t,$h,$h,$b);$e($i,$l,$t,$h*5/6,$h*5/6,$w);$f=imagefilledpolygon;$f($i,array($l+$u*5,$t+$u*1.5,$l-$u*7.5,$t+$u*1.5,$l-$u*7.125,$t+$u*0.5,$l+$u*4,$t+$u*.5,$l+$u*4,$t-$u*.5,$l-$u*7.5,$t-$u*.5,$l-$u*7.125,$t-$u*1.5,$l+$u*5,$t-$u*1.5),8,$b);$f($i,array($l+$u*4.24,$t-$u*4.24,$l+$u*1.84,$t+$u*1.5,$l+$u*3.84,$t+$u*3.26,$l+$u*3.84,$t+$u*4.62,$h*2,$t,),5,$w);imagepng($i);
โทรfile.php?h=200
จากเบราว์เซอร์ของคุณเพื่อดูภาพ
พิกัดจะขึ้นอยู่กับการวัดที่ดำเนินการกับ GIMP
100 พิกเซล:
200 พิกเซล:
เลเยอร์เพิ่มทีละขั้นตอน:
รหัสที่ไม่ได้รับการตอบโต้ (ส่วนที่เป็นเศษส่วนรหัส golfed มีค่าที่ปัดเศษ)
<?php
header('Content-type: image/png');
$h = $_GET['h'];
$i = imagecreatetruecolor($h * 1.1,$h * 1.1);
$c = imagecolorallocate;
# black
$b = $c($i,0,0,0);
# white
$w = $c($i,255,255,255);
imagefill($i,0,0,$w);
$l = $h * .7; # distance between left and center of the circle
$t = $h * .55; # distance between top and center of the circle
# one "unit", as defined by the specs
$u = $h / 12;
$e = imagefilledellipse;
# disk is black
$e($i, $l, $t, $h, $h, $b);
# inner disk is white
$e($i, $l, $t, $h * (5 / 6), $h * (5 / 6), $w);
$f = imagefilledpolygon;
# draw 2 bars in black
$f($i, array(
# bottom bar
$l + $u * 5, $t + ($u * 1.5), # bottom right
$l-$u * 7.5, $t + ($u * 1.5), # bottom left
$l-$u * 7.125, $t + ($u * 0.5), # top left
$l + $u * 4, $t + ($u * 0.5), # top right
# top bar
$l + $u * 4, $t - ($u * 0.5), # bottom right
$l-$u * 7.5, $t - ($u * 0.5), # bottom left
$l-$u * 7.125, $t - ($u * 1.5), # top left
$l + $u * 5, $t - ($u * 1.5) # top right
), 8, $b);
# hide right parts of bars and circle by drawing white
$f($i, array(
$l + $u * 6 * (212 / 300), $t - ($u * 6 * (212 / 300)), # right of the disk
$l + $u * 6 * (92 / 300), $t + ($u * 6 * (74 / 300)), # left = bottom right of bottom bar
$l + $u * 6 * (191 / 300), $t + ($u * 6 * (163 / 300)), # bottom of the circle
$l + $u * 6 * (191 / 300), $t + ($u * 6 * (231 / 300)), # bottom of the circle too
$h * 2, $t, # some point at the right of the image (outside the image)
), 5, $w);
imagepng($i);