绘制温暖的欢迎秘密帽子


56

2014年冬季狂欢节正处于盛况,我们大家都不喜欢帽子吗?尤其是秘密帽子!

那么,为什么不戴一顶神秘帽子呢?

挑战

您的任务是按您选择的语言并按此页面上显示的确切结构按比例绘制Warm Welcome Hat 。

与往常一样,您可以使用矢量或栅格图形将帽子渲染到文件或屏幕上。如果输出已光栅化,则图像的尺寸必须为400x400像素或更大。

此外,帽子的实际内容(图像彩色部分的边界矩形区域)应覆盖输出图像的40%以上。

技术指标

下图列出了帽子的各种尺寸。所有尺寸均以单位为单位,例如,像素。图像中的所有边界半径均应以13单位半径绘制。

在此处输入图片说明

颜色

  • 星形和圆形戒指中的红色-RGB(255,28,34)
  • 圆圈中的黄色-rgb(255,202,87)
  • 最浅的灰色-RGB(88,88,92)
  • 最深的灰色-RGB(31,26,26)
  • 中灰-RGB(64,64,64)

计分

这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。

值得一提的是,使用现有的压缩(例如嵌入压缩的GIF)会陷入几个标准漏洞


关于建议的修改:我选择拒绝。我看到图像按原样正确显示。
mbomb007 '17

Answers:


15

GolfScript(376 373 364 350 645个610 607字节)

按照原始规范要求精确构造SVG,将在607字节中生成高尔夫球SVG。

代码包含许多非打印字符,因此这是xxd输出:

0000000: 221a c837 cde6 0c0c 4658 5786 cead ca66  "..7....FXW....f
0000010: 3507 d130 1577 4657 4067 df6b 97e7 510f  5..0.wFW@g.k..Q.
0000020: cbb0 e3e5 77c6 a91d d830 fa92 eea0 d447  ....w....0.....G
0000030: 7721 cc59 3f4c 230b e0bb fd3e ecf3 d4f7  w!.Y?L#....>....
0000040: 2c6b abd5 b1e5 939d 68b4 e89e 39ca a259  ,k......h...9..Y
0000050: b934 ef6f 203a 7abf 1a2c b468 3351 4c53  .4.o :z..,.h3QLS
0000060: c056 9a59 f38c a97e cf82 8840 ee7c 43e4  .V.Y...~...@.|C.
0000070: 123f df1a 00d4 542d a29c 0195 3ad5 4af4  .?....T-....:.J.
0000080: c644 57c7 0b6b 4d4f 908b 8cf7 c8e2 536d  .DW..kMO......Sm
0000090: 9d36 1139 1406 5c5c dcbc 3a11 1993 63a6  .6.9..\\..:...c.
00000a0: 4f8b 7b62 de77 5158 a485 dec1 87b4 1d11  O.{b.wQX........
00000b0: 01b1 e49d 8adb 0b29 ad44 93e4 7bbd 027e  .......).D..{..~
00000c0: 7a6f 60ca 99f4 6ab3 7bc0 63c3 ba70 1220  zo`...j.{.c..p. 
00000d0: 1aea 9206 da5a 95ce 6f70 67f8 856e 8807  .....Z..opg..n..
00000e0: adec e533 0c1e 3dc6 96e5 54d4 2837 4497  ...3..=...T.(7D.
00000f0: f5ea 2135 d261 9c02 fa61 c12a 7180 085a  ..!5.a...a.*q..Z
0000100: a5b8 e3d6 68cb 0659 f4ad d01d 5fc4 9e5b  ....h..Y...._..[
0000110: d030 46d5 96c4 439f da99 2cb1 52b9 5d53  .0F...C...,.R.]S
0000120: 098e 7598 2785 a962 a40d edbd 18cb e46c  ..u.'..b.......l
0000130: 6edb ba9f 17be 36ab ef23 0caf 3ce8 352d  n.....6..#..<.5-
0000140: fad5 762b a388 ca17 413f 7dac 6dd1 116e  ..v+....A?}.m..n
0000150: b2e8 9cd1 d00a dda1 716d a148 acc7 8749  ........qm.H...I
0000160: f2c3 a7a9 8128 02e9 d83c f350 7a02 74ec  .....(...<.Pz.t.
0000170: 6270 6089 a16d 7bfa b6dd e56a 366a d85b  bp`..m{....j6j.[
0000180: 33e5 b777 05c1 6f4e f06b ca95 3ffc 49f7  3..w..oN.k..?.I.
0000190: 1a08 6bc5 abb0 c745 e439 b87e b81c 52c8  ..k....E.9.~..R.
00001a0: a445 935e 5c5c 00d3 34de c002 721c b69d  .E.^\\..4...r...
00001b0: 16ee aab0 9562 4d44 44ed 0193 13a7 eed2  .....bMDD.......
00001c0: 99e4 6350 a756 c21a 980b 6bca 57f9 8443  ..cP.V....k.W..C
00001d0: eecc 9fd1 05ce 78c4 f95f dc90 8926 6eb4  ......x.._...&n.
00001e0: 88b8 7b90 44be 33c3 cc2a b032 d809 17d0  ..{.D.3..*.2....
00001f0: 7e32 c4c9 e37f ceb3 b1e0 b634 a690 8163  ~2.........4...c
0000200: cd34 e3d9 9768 3e13 ac10 5003 1cb7 af6b  .4...h>...P....k
0000210: 863f cba0 9896 e50a d029 8e2b 584c d86f  .?.......).+XL.o
0000220: 67a7 120e 318a cb22 3235 3662 6173 6520  g...1.."256base 
0000230: 3132 3462 6173 655b 305d 2f28 3332 2c7b  124base[0]/(32,{
0000240: 5c5b 3124 295d 2f5c 3224 3d2a 7d2f 5c2c  \[1$)]/\2$=*}/\,
0000250: 297b 2d2e 3634 3e33 322a 2b7d 2b25 2b    ){-.64>32*+}+%+

它是构造语法引擎的一种变体,追随者会熟悉:

'MAGIC STRING'256base 124base[0]/(40,{\[1$)]/\2$=*}/\,){-.64>32*+}+%+

事实证明,将高尔夫SVG大写,压缩然后在减压后再小写会更好。

运行时会生成一个840字节的SVG:

<svg width="192" height="192"><g transform="translate(-19.356 39.823) scale(.11435537421402706)"><path d="m873 126c-28-56-97-79-153-50l-361 182c-40 20-63 60-62 102v369c0 63 51 114 114 114h1198c63 0 114-51 114-114v-369c1-62-22-82-62-102l-361-182c-56-29-125-6-153 50c-28 56-6 124 49 152h-372c55-28 77-96 49-152z" fill="#231f20"/><path d="m1642 812c0 60-49 109-109 109h-1047c-60 0-109-49-109-109v-435c0-60 49-109 109-109h96.557636322653a530 274 0 0 1 854.884727354693 0h96.557636322653c60 0 109 49 109 109v435z" fill="#424143"/><path d="m1561 826c0 52-42 95-95 95h-912c-52 0-95-42-95-95v-463c0-52 42-95 95-95h912c52 0 95 42 95 95v463z" fill="#595a5c"/><circle cy="594" cx="1010" r="199" fill="#f9c960" stroke="#ec2227" stroke-width="42"/><path d="m1063 615l85-62-105 0-33-100-33 100-105 0 85 62-32 100 85-62 85 62z" fill="#ec2227"/></g></svg>

我将位置调整了几百万像素,并校正了最暗的灰色部分中的一个小的不对称性。


但是,对聊天中问题和讨论的更改表明,实际上可以为SVG创建一个很好的近似值,可以以364个字节完成。解压缩链是相似的,因此GolfScript文件的xxd输出为:

0000000: 2710 9f1d b7bb 6ca9 ad60 1325 b869 45a6  '.....l..`.%.iE.
0000010: 9371 2eee 1271 1dac 0244 9ca3 2820 e6be  .q...q...D..( ..
0000020: b038 68e4 4e53 bbe9 7809 a67a 5f02 2f14  .8h.NS..x..z_./.
0000030: 66a1 0cb3 648c 76d4 0450 028d fd32 b81f  f...d.v..P...2..
0000040: 351a d449 bba8 e685 4de8 1fc0 abfd 8b9f  5..I....M.......
0000050: d9d9 33cd 16e9 5c27 b7a0 dc0f 4138 a2ca  ..3...\'....A8..
0000060: 2b45 a2c2 571e 7e1e 1030 dcfd b48e 377b  +E..W.~..0....7{
0000070: 112e 7762 d14c 1fed 0bcb 15b4 c383 f828  ..wb.L.........(
0000080: b317 8c9f 890b ce84 7782 4c10 fc8e 7602  ........w.L...v.
0000090: 9fef 9563 fe30 45b0 7144 30b3 f3c5 fa22  ...c.0E.qD0...."
00000a0: ccae 8a08 c506 466b 6b84 317e 62dd a558  ......Fkk.1~b..X
00000b0: 8423 d8ef 9d67 e807 0d23 847d 4dab 68ff  .#...g...#.}M.h.
00000c0: 952b ca20 14d3 0881 2880 6611 eb53 10c6  .+. ....(.f..S..
00000d0: 0058 573f 3c87 957c 8512 59ff 94f3 ae38  .XW?<..|..Y....8
00000e0: 4145 bf8d 4123 6e84 aa62 904d a878 0bca  AE..A#n..b.M.x..
00000f0: 854b deaa 32ae 70fc b31a 9578 676a df8a  .K..2.p....xgj..
0000100: 7310 ecfc 47d2 5dde 1a8c 3898 943b ede3  s...G.]...8..;..
0000110: d0a2 55a4 eb00 b623 0302 d79c a712 b616  ..U....#........
0000120: 5037 dc2d 0dad 2732 3536 6261 7365 2031  P7.-..'256base 1
0000130: 3133 6261 7365 5b30 5d2f 2832 312c 7b5c  13base[0]/(21,{\
0000140: 5b31 2429 5d2f 5c32 243d 2a7d 2f5c 2c29  [1$)]/\2$=*}/\,)
0000150: 7b2d 2e36 343e 3332 2a2b 7d2b 252b       {-.64>32*+}+%+

并生成一个547字节的SVG文件:

<svg width="1426" height="858"><path d="m475 114-361.5 182v370h1199v-370l-361.5-182" stroke="#231f20" stroke-linecap="round" stroke-linejoin="round" stroke-width="227"/><ellipse cx="713" cy="367" rx="530" ry="274" fill="#424143"/><rect x="80" y="205" width="1266" height="653" rx="109" ry="109" fill="#424143"/><rect x="161" y="205" width="1103" height="653" rx="95" ry="95" fill="#595a5c"/><circle cx="713" cy="531" r="199" fill="#f9c960" stroke="#ec2227" stroke-width="42"/><path d="m713 390 85 262-223-162 276 0-223 162z" fill="#ec2227"/></svg>

感谢Paul LeBeau指出了SVG中7字节的节省(在GolfScript中转换为9字节),并感谢他的回答证明了只用5点就可以画出星星。(使用他的答案,我可以将其减少到329个字节,或者将其调整为323个字节,但是我对此不太满意)。

使用Inkscape导出为50%:

帽子图像呈现为PNG

要查看结构,下面是fill="none"在所有内容上渲染的SVG,并将某些填充颜色更改为描边颜色: 轮廓图


@Optimizer,但与JS不同,它几乎是像素完美的。除了打高尔夫球以外,它与原始SVG的唯一区别在于它修复了不对称性。如果以马丁标记的图像样式放松一下,我可能会节省很多。
彼得·泰勒

“ <g>”和“ </ g>”不是必需的,因此您应该可以多保存一些。
Paul LeBeau 2014年

@PaulLeBeau,非常正确,谢谢。
彼得·泰勒

26

SVG(462460454429384384365字节)

我知道这不是一种编程语言,但我认为这至少对生成SVG输出的任何人有用。

这是基于Peter Taylor的SVG。

通过使用原始坐标,并稍微优化了路径,我设法缩小了SVG。我还固定了颜色。

<svg><g stroke-linecap=round stroke-linejoin=round stroke-width=26><path d=M54,13,13,36V75H151V36L110,13 stroke=#1f1a1a /><path d=M21,84V36H37A91,91,0,0,1,127,36h16V84z stroke=#404040 /><path d=M30,36v48h104V36z stroke=#58585c fill=#58585c /></g><circle cx=82 cy=60 r=23 fill=#ffca57 stroke=#ff1c22 stroke-width=5 /><path d=M82,43,92,74,66,55H98L72,74z fill=#ff1c22

更新:修复了Peter Taylor指出的缺陷以及rects的位置,并节省了2个字节。

更新2:合并了Peter的另一个修复和建议(-6个字节)

更新3:刚注意到指令现在指定所有半径为13,因此利用它,并进一步优化路径,我又节省了25个字节。小提琴在这里。

更新4:因为我已经假设SVG嵌入在HTML中(独立的SVG需要名称空间声明),所以实际上我可以进一步压缩它。(a)我不需要width和height属性,因为SVG的大小小于浏览器为大小不确定的对象提供的默认大小(300x150),并且(b)HTML解析器宽恕了不支持没有引号,因此可以删除其中的一些引号(来自Squeamish Ossifrage的想法)。保存另外45个字节。

更新5:使用hsl的技巧将颜色去引号并删除尾端标记。我们又保存了19个字节。乍一看,后者对我来说似乎有点作弊,但由于它适用于所有浏览器,所以我改变了主意。:)谢谢hsl!


一些不错的主意,但有一个非常严重的缺陷。中灰色的亮度不够高,无法覆盖深灰色。我不确定是否最好通过添加fill="none"到组或调整曲线来解决此问题。
彼得·泰勒

发现得很好,谢谢。立即修复。我没有使用正确的圆弧半径,因为我忘记减去笔划宽度的一半。
Paul LeBeau 2014年

<rect>高度应74大于而不是78。我让它有5焦炭节约与替代它<path>fillstrokestroke-width="18",然后里面的感动<g>和共同stroke-width="18"从两个路径的移动<g>。拥有另一个<path>而不是一个<rect>也应该有助于一点点的可压缩性。
彼得·泰勒

谢谢。半径之间似乎存在差异(8 vs 9),这就是为什么我将它们不同。但这还不是很清楚,因此无论如何几乎都不能将两者都设为9。
Paul LeBeau 2014年

Radii被指定为13,我已经更新了SVG。
Paul LeBeau 2014年

20

Mathematica 787612600514506字节

所需代码数量惊人。一定会被打败。

取消形式

red=RGBColor[1.,.11,.13]
yellow=RGBColor[1.,.79,.34]
lightGrey=RGBColor[.35,.35,.36]
midGrey=RGBColor[.25,.25,.25]
r=RoundingRadius->8;
pentagonalVertices[offset_]:=Table[{Cos[2π k/5+ offset],Sin[2π k/5+offset]},{k,0,5}];
x=63;x2=72;
y=37;
pts={{e=22,50},{h=72,30},{h,-17},{-h,-15},{-h,30},{-e,50}};
pts2={{-h,-15},{-h,30},{-e,50}}
Graphics[{
{Black,Thickness[.13],JoinForm["Round"],CapForm["Round"], Line[pts]},
midGrey,Rectangle[{-x2,-y},{x2,y},r],
Disk[{0,-55},104,{Pi/3,2Pi/3}],
White,Rectangle[{-40,-60},{40,0},r],
lightGrey,Rectangle[{-x,-y},{x,y},r],
red,Disk[{0,0},25],yellow,Disk[{0,0},19.5],red,
GraphicsComplex[16.7 pentagonalVertices[Pi/2],Polygon[{1,3,5,2,4}]],
GraphicsComplex[6.4 pentagonalVertices[3 Pi/2],Polygon[{1,2,3,4,5}]]}]

帽子

打高尔夫球

g=GraphicsComplex;c=RGBColor;d=c[1.,.11,.13];o="Round";k=Rectangle;j=Disk;n=Polygon;r=RoundingRadius->8;w@s_:=Table[{Cos[2\[Pi]k/5+s],Sin[2\[Pi]k/5+s]},{k,0,5}];x=63;i=72;y=37;p={{e=22,50},{h=72,30},{h,-17},{-h,-15},{-h,30},{-e,50}};Graphics[{Thickness[.13],JoinForm@o,CapForm@o,Line@p,c[.25,.25,.25],k[{-i,-y},{i,y},r],j[{0,-55},104,{\[Pi]/3,2\[Pi]/3}],White,k[{-40,-60},{40,0},r],c[.35,.35,.36],k[{-x,-y},{x,y},r],d,j[{0,0},25],c[1.,.79,.34],j[{0,0},19.5],d,g[16.7w[\[Pi]/2],n[{1,3,5,2,4}]],g[6.4w[3\[Pi]/2],n[{1,2,3,4,5}]]}]

请问您如何计算字节数?(这里是我的新手),在通过此网站计算您的高尔夫版本时,我得到651个字节:mothereff.in/byte-counter
Jean-Paul

1
我使用Wolfram所使用的自动计数器应用程序来评估单线竞赛的提交时间(blog.wolfram.com/2014/11/10/…)。它不计入为便于阅读而包括的可选空格。它实际上读取字符的no,而不是字节,但是我假设一个char = 1个字节。
DavidC 2014年

说得通!太糟糕了,我无法对提交的内容进行同样的操作:)谢谢您的回答。
Jean-Paul

我想你可以那样看。但这在一行上留下了非常难以阅读的显示。我更喜欢保持清晰。
DavidC 2014年

18

HTML + ES6、533

<canvas id=D width=600 height=400><script>c=D.getContext('2d')
S=x=>c.strokeStyle=F(x)
F=x=>c.fillStyle=x
W=x=>c.lineWidth=x
B=x=>c.stroke()||c.fill()||c.beginPath()
G='s.charCodeAt(i++)*9-300,'
L=s=>B()||eval('for(i in s)i%2||c.lineTo('+G+G+'0)')&&B()
c.lineCap=c.lineJoin='round'
W(60)
S('#1F1A1A')
L(';,+3+BXBX3H,')
S('#404040')
L('.3.EUEU3.3')
c.arc(291,390,270,4,5.2,0)
B()
S('#58585C')
L('131ERER313')
S(R='#FF1C22')
F('#FFCA57')
W(30)
c.arc(291,240,69,0,7,0)
B()
c.font='105px serif'
S(R)
c.fillText('\u2605',239,276)</script>

摘要(已修改):

<canvas style="margin:-40px 0 0 100px;height:250px;" id=D width=600 height=400><script>stages=[function(){c=D.getContext('2d');S=function(x){return c.strokeStyle=F(x)};F=function(x){return c.fillStyle=x};W=function(x){return c.lineWidth=x};B=function(x){return c.stroke()||c.fill()||c.beginPath()};G='s.charCodeAt(i++)*9-300,';L=function(s){return B()||eval('for(i in s)i%2||c.lineTo('+G+G+'0)')&&B()}},function(){c.lineCap=c.lineJoin='round';W(60);S('#1F1A1A');L(';,+3+BXBX3H,')},function(){S('#404040');L('.3.EUEU3.3')},function(){c.arc(291,390,270,4,5.2,0);B()},function(){S('#58585C');L('131ERER313')},function(){S(R='#FF1C22');F('#FFCA57');W(30);c.arc(291,240,69,0,7,0);B()},function(){c.font='105px serif';S(R);c.fillText('\u2605',239,276)}];next=function(i){stages[i]();if(i<6)setTimeout(next,1000,i+1)};next(0)</script>

帽子!


@Optimizer我添加了一张图片,因为它在FF和Chrome中看起来都不错。Windows上的字体必须与其他字体不同。
grc 2014年

@grc我认为您不能依靠某些字体在所有系统上都可以使用;尤其是如果您使用serif,甚至不是特定的字体,也不要这么做……
Alexander

在Arial Unicode MS(实际上具有代码点的Windows Arial字体)中,代码点甚至没有正确的形状。这些点的基础较窄。
彼得·泰勒

13

HTML + CSS,676636625字节

这可以通过摆脱那些被golfed了很多,left:XXXpx并使用某种定心现在使用变换到中心的一切,而不是left:XXXpx

*{left:50%;transform:translate(-50%);position:absolute;border-radius:13px;height:75px}a,b,f{width:145px;background:#404040}b{width:126px;background:#58585C}c{width:163px;height:61px;top:50px}d,e{width:68px;height:40px;top:-15px}c,d,e{background:#1F1A1A}d{left:0;transform:skew(0deg,-26deg);border-radius:9px 24px}e{left:96px;transform:skew(0deg,26deg);border-radius:24px 9px}f{height:40px;width:99px;top:-13px;border-radius:150px/60px}g{height:34px;width:34px;background:#FFCA57;border:5px solid #FF1C22;border-radius:40px;top:13px;color:#FF1C22;font-size:1cm;line-height:31px;padding:3px}
<c><d></d><e></e><f></f><a><b><g>

注意:这在Windows的Firefox中效果最佳/符合预期

最终结果如下所示:

在此处输入图片说明


我从未见过高尔夫HTML标签。有趣。
Arturo TorresSánchez2014年

1
@ArturoTorresSánchez然后,您需要一下
Optimizer

现在,星空在FF 34.0 / Windows上看起来向左和向左偏移
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ 2014年

8

ActionScript 3.0,491个字节

打高尔夫球的形式:

var h=new Shape(),g=h.graphics,l=g.lineTo,m=g.moveTo,s=g.lineStyle,b=g.beginFill,e=g.endFill,r=g.drawRoundRect;s(23,0x231F20);m(77,18);l(41,36);l(41,73);m(125,18);l(161,36);l(161,73);s();b(0x424143);g.drawEllipse(48,16,106,55);e();b(0x424143);r(38,27,126,65,23,23);e();b(0x595A5C);r(46,27,110,65,17,17);e();s(4.2,0xEC2227);b(0xF9C960);g.drawCircle(101,59,20);e();s();b(0xEC2227);m(106,61);l(115,55);l(104,55);l(101,45);l(98,55);l(87,55);l(96,61);l(93,71);l(101,65);l(110,71);e();addChild(h);

输出:http : //megaswf.com/file/2708781.swf


1
或者:var ww=new WarmWelcome(); stage.addChild(ww);并将其绘制在具有AS3链接的Flash中:)
wchargin 2014年

7

MATLAB R2013a,551 541

这是我的第一个Code Golf。所以,如果有什么不符合规定的地方,请教我/告诉我 :)

打高尔夫球的形式:

hold on
r=[1 .11 .13];h=[];b=2.4;q=-37;o='Curvature';p='Position'
x='FaceColor';z='EdgeColor';v=@rectangle;t=@repmat;s=@set
for i=1:19;h=[h v(p,[-82+b*i -32+i 22 73]) v(p,[60-b*i -32+i 22 73])];end
s(h,o,1,x,[.12 .1 .1])
c=.8:.01:2.2
h=[h fill(104*cos(c),104*sin(c)-52,t(.25,1,3))]
h=[h v(p,[-72 q 144 74],o,.1,x,t(.25,1,3))]
a=v(p,[-63 q 126 74])
a=[a v(p,[-63 q 126 74])]
s(a,o,.1,x,[t(.35,1,2) .36])
v(p,[-20 -20 40 40],o,1,x,[1 .79 .34],z,r,'LineWidth',10)
plot(0,0,'rp',['Marker' x],r,'MarkerSize',58.5)
s([a h],z,'none')
axis equal off

输出(光栅化):

在此处输入图片说明


6

LaTeX / TikZ(613字节)

\RequirePackage{xcolor,tikz}\RequirePackage[active,tightpage]{preview}\PreviewMacro[[!]\tikz\def~#1{\definecolor#1{HTML}}~1{EC2227}~2{F9C960}~3{595A5C}~4{231F20}~5{424143}\def\r{rounded
corners}\def\R{radius}\tikz[x=1pt,y=1pt]{\def~{\fill[}\draw[4,line
width=22.8,line
cap=round,line
join=round](-23.8,41.7)--(-59.9,23.5)--(-59.9,-13.3)--(59.9,-13.3)--(59.9,23.5)--(23.8,41.7);~5,x
\R=53,y
\R=27.4](0,16.4)circle;~5,\r=10.9](-63,-32.65)rectangle(63,32.65);~3,\r=9.5](-55.1,-32.65)rectangle(55.1,32.65);~1,\R=22](0,0)circle;~2,\R=17.8](0,0)circle;~1](90:14.1)\foreach\!in{0,...,4}{--(90+\!*144:14.1)}--cycle;}\stop

结果pdflatex是一个PDF文件,带有作为矢量图形的帽子和一个紧密的边框。

结果

不打高尔夫球

\documentclass{minimal}
% Package xcolor provides color model HTML
% in order to take the exact same values, used in the SVG file 
\usepackage{xcolor}
\usepackage{tikz}

% Package preview is used to get a correct bounding
% box for the graphics
\usepackage[active,tightpage]{preview}
\PreviewEnvironment[{[]}]{tikzpicture}

% Color definitions. one digit instead of a name saves many bytes
\definecolor1{HTML}{EC2227}
\definecolor2{HTML}{F9C960}
\definecolor3{HTML}{595A5C}
\definecolor4{HTML}{231F20}
\definecolor5{HTML}{424143}

\begin{document}
  \begin{tikzpicture}[x=1pt,y=1pt]
    % Draws the dark lines in the background
    \draw[4,line width=22.8,line cap=round,line join=round]
    (-23.8,41.7)--(-59.9,23.5)--(-59.9,-13.3)
    --(59.9,-13.3)--(59.9,23.5)--(23.8,41.7);
    % Draws the ellipsis
    \fill[5,x radius=53,y radius=27.4](0,16.4)circle;
    % Draw the rear rectangle 
    \fill[5,rounded corners=10.9](-63,-32.65)rectangle(63,32.65);   
    % Draws the rectangle in the foreground
    \fill[3,rounded corners=9.5](-55.1,-32.65)rectangle(55.1,32.65);
    % Draws the red full circle
    \fill[1,radius=22](0,0)circle;  
    % Draws the inner yellow circle 
    \fill[2,radius=17.8](0,0)circle;
    % Draw the star
    \fill[1](90:14.1)\foreach\!in{0,...,4}{--(90+\!*144:14.1)}--cycle;
  \end{tikzpicture}%
\end{document}

这些值取自SVG文件,它们更准确(但也包含舍入错误)。最棘手的部分是背景中的深色斜线。它们被绘制为非常粗的线,并带有圆形的线帽和连接。

动画


多么美丽:)
让-保罗

2

Perl + TK:555

新行仅出于可读性,尽管我迷失了太多变量。

use Tk;@w=(-width=>13);$c=tkinit->Canvas->pack;
$c->createPolygon($a=131,$b=163,168,150,$a,$b,$e=269,$b,232,150,$e,$b,$e,$d=225,$a,$d,-outline=>"#1f1a1a",@w);
$c->createPolygon(137,$f=169,263,$f,263,$g=231,137,$g,-outline=>$h="#".40x3,@w);
$c->createOval($a,147,$e,$g,-fill=>$h,-outline=>$h);
$c->createPolygon(143,$f,257,$f,257,$g,143,$g,-fill=>$l="#58585c",-outline=>$l,@w);
$c->createOval(175,175,$d,$d,-width=>5,-fill=>"#ffca57",-outline=>$r="#ff1c22");
$c->createPolygon((map{200+($_%2?17:6)*sin.628*$_,200+($_%2?17:6)*cos.628*$_}0..11),-fill=>$r);
MainLoop

这是一张照片:

在此处输入图片说明

我不认为它接近像素完美,但足够接近了:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.