{"id":6888,"date":"2023-04-14T17:29:05","date_gmt":"2023-04-14T09:29:05","guid":{"rendered":"https:\/\/blog.hoyo.idv.tw\/?p=6888"},"modified":"2023-04-14T17:29:26","modified_gmt":"2023-04-14T09:29:26","slug":"jpeg-2-ascii","status":"publish","type":"post","link":"https:\/\/blog.hoyo.idv.tw\/?p=6888","title":{"rendered":"\u5716\u7247\u8f49 ASCII"},"content":{"rendered":"<p>--<\/p>\n<h2>Python<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/converting-image-ascii-image-python\/\" target=\"_blank\" rel=\"noopener\">Converting an image to ASCII image in Python - GeeksforGeeks<\/a><\/li>\n<li><a href=\"https:\/\/gist.github.com\/MotionDesignStudio\/9374326\" target=\"_blank\" rel=\"noopener\">Python ASCII Video And ASCII Image Creator \u00b7 GitHub<\/a><\/li>\n<\/ul>\n<p>\u5b89\u88dd\u63d2\u4ef6<\/p>\n<ul>\n<li>Pillow<\/li>\n<\/ul>\n<pre class=\"lang:python decode:true\"># Python code to convert an image to ASCII image.\r\nimport sys, random, argparse\r\nimport numpy as np\r\nimport math\r\n\r\nfrom PIL import Image\r\n\r\n# gray scale level values from:\r\n# http:\/\/paulbourke.net\/dataformats\/asciiart\/\r\n\r\n# 70 levels of gray\r\ngscale1 = \"$@B%8&amp;WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft\/\\|()1{}[]?-_+~&lt;&gt;i!lI;:,\\\"^`'. \"\r\n\r\n# 10 levels of gray\r\ngscale2 = '@%#*+=-:. '\r\n\r\n\r\ndef getAverageL(image):\r\n    \"\"\"\r\n    Given PIL Image, return average value of grayscale value\r\n    \"\"\"\r\n    # get image as numpy array\r\n    im = np.array(image)\r\n\r\n    # get shape\r\n    w, h = im.shape\r\n\r\n    # get average\r\n    return np.average(im.reshape(w * h))\r\n\r\n\r\ndef covertImageToAscii(fileName, cols, scale, moreLevels):\r\n    \"\"\"\r\n    Given Image and dims (rows, cols) returns an m*n list of Images\r\n    \"\"\"\r\n    # declare globals\r\n    global gscale1, gscale2\r\n\r\n    # open image and convert to grayscale\r\n    image = Image.open(fileName).convert('L')\r\n\r\n    # store dimensions\r\n    W, H = image.size[0], image.size[1]\r\n    print(\"input image dims: %d x %d\" % (W, H))\r\n\r\n    # compute width of tile\r\n    w = W \/ cols\r\n\r\n    # compute tile height based on aspect ratio and scale\r\n    h = w \/ scale\r\n\r\n    # compute number of rows\r\n    rows = int(H \/ h)\r\n\r\n    print(\"cols: %d, rows: %d\" % (cols, rows))\r\n    print(\"tile dims: %d x %d\" % (w, h))\r\n\r\n    # check if image size is too small\r\n    if cols &gt; W or rows &gt; H:\r\n        print(\"Image too small for specified cols!\")\r\n        exit(0)\r\n\r\n    # ascii image is a list of character strings\r\n    aimg = []\r\n    # generate list of dimensions\r\n    for j in range(rows):\r\n        y1 = int(j * h)\r\n        y2 = int((j + 1) * h)\r\n\r\n        # correct last tile\r\n        if j == rows - 1:\r\n            y2 = H\r\n\r\n        # append an empty string\r\n        aimg.append(\"\")\r\n\r\n        for i in range(cols):\r\n\r\n            # crop image to tile\r\n            x1 = int(i * w)\r\n            x2 = int((i + 1) * w)\r\n\r\n            # correct last tile\r\n            if i == cols - 1:\r\n                x2 = W\r\n\r\n            # crop image to extract tile\r\n            img = image.crop((x1, y1, x2, y2))\r\n\r\n            # get average luminance\r\n            avg = int(getAverageL(img))\r\n\r\n            # look up ascii char\r\n            if moreLevels:\r\n                gsval = gscale1[int((avg * 69) \/ 255)]\r\n            else:\r\n                gsval = gscale2[int((avg * 9) \/ 255)]\r\n\r\n            # append ascii char to string\r\n            aimg[j] += gsval\r\n\r\n    # return txt image\r\n    return aimg\r\n\r\n\r\n# main() function\r\ndef main():\r\n    # create parser\r\n    descStr = \"This program converts an image into ASCII art.\"\r\n    parser = argparse.ArgumentParser(description=descStr)\r\n    # add expected arguments\r\n    parser.add_argument('--file', dest='imgFile', required=True)\r\n    parser.add_argument('--scale', dest='scale', required=False)\r\n    parser.add_argument('--out', dest='outFile', required=False)\r\n    parser.add_argument('--cols', dest='cols', required=False)\r\n    parser.add_argument('--morelevels', dest='moreLevels', action='store_true')\r\n\r\n    # parse args\r\n    args = parser.parse_args()\r\n\r\n    imgFile = args.imgFile\r\n\r\n    # set output file\r\n    outFile = 'out.txt'\r\n    if args.outFile:\r\n        outFile = args.outFile\r\n\r\n    # set scale default as 0.43 which suits\r\n    # a Courier font\r\n    scale = 0.43\r\n    if args.scale:\r\n        scale = float(args.scale)\r\n\r\n    # set cols\r\n    cols = 80\r\n    if args.cols:\r\n        cols = int(args.cols)\r\n\r\n    print('generating ASCII art...')\r\n    # convert image to ascii txt\r\n    aimg = covertImageToAscii(imgFile, cols, scale, args.moreLevels)\r\n\r\n    # open file\r\n    f = open(outFile, 'w')\r\n\r\n    # write to file\r\n    for row in aimg:\r\n        f.write(row + '\\n')\r\n\r\n    # cleanup\r\n    f.close()\r\n    print(\"ASCII art written to %s\" % outFile)\r\n\r\n\r\n# call main\r\nif __name__ == '__main__':\r\n    main()<\/pre>\n<p>\u57f7\u884c<\/p>\n<pre class=\"lang:default decode:true\">$python \"ASCII_IMAGE_GENERATOR.py\" --file data\/11.jpg --cols 120<\/pre>\n<p>\u8f49\u63db\u6210\u679c\u5982\u4e0b<\/p>\n<pre class=\"font-size:12 line-height:16 striped:false show-plain-default:true lang:default decode:true \">@@@@@@%%%%%###%%%%%%%%%###**##@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#**=-.....................\r\n@@@@@@%%%%%###%%%%%#####**##%@@@@@@@@@@@@@@@@@@@@@@@%@@@@%@@@@@@@@@@@@@@@@%##%%*=:..................\r\n@@@@@@%%%%########****###**#@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@%%%@@@@@@@@@@@@%%%+=*:.................\r\n@@@@@%%%#####*****+++*##*#%@@@%@@@@@@@@@@@@@%%%%%%%%@@@@@@@%%%%@@@@@@@@@@@@@%%@%##=::...............\r\n%%%%%%##********+==++#*##%@@@@@@@@%@@@%%%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%%##*-...............\r\n######**+++++++++=+++####%@@@@@%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#:..............\r\n****+===+++++++++=++++**%%%%%@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%-..............\r\n+===--==+++++=---+++*+**##%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@%%%#=:.............\r\n===--==+++=--:::-=++++*+*##%%%%%%%%@%%%###*****##%%###**###%%%%@@@@@@@@@%%%@@@@@@%%%%*:.............\r\n===--------:::::===++*#**##%%%%%%%##***++========+=======+++*##%%%%%@@@@@@@@@@@@@%%%%#-.............\r\n==---:::::::::::+++**#**#%##*+++++++===-----:::-----:-:-----==++**##%@@@@@@@@@@@%%%%%#-.............\r\n==---::::::::::-++**###%%%#*+======-----:::::::::::::::::------===++*#%%@@@@@@@@@%%%%#+.............\r\n==---:::::::::--=**%#%%%%%#+==-----::::::::::::::::::::::::--------==**#%@@@@@@%%%%%%%*:............\r\n+==---::::-----==##%#%%%%%#=----::::::::::::::::::::::::::::---------=+*#@@@@@@@%%%%%#+.............\r\n++==----------===*##%%@%@#+---::::::::::::::::::::::::::::::::--------=+*%@@@@@@@%%%%%-.............\r\n++=======------==+**%@@%#+--::-----::::::::::::::::::::::::::::::::----=+#@@@@@@%%%%%=..............\r\n======--------::-+**#%%#+-------=++++++=-::::::::::::::----==+++++==----=+#@@@@@%%%%*:..............\r\n======---------++=*##%*=-::::::::::--==+++=--:::::::---===+++++++======-==+#@@@@%%%%:...............\r\n======-------=-+==+##*-::::::::::::::----=---:::::::-----==------------=--=+#@@%%%@#-...............\r\n=====---=====+===--##=..:::---+++*%#*#+=-==---:::::--=========-------------=+%@%%%%#=...............\r\n=+++=---=======---=**:.:::::------**#*-=+=---::::::--==+++=###%#+*+=--------=*%%%*+=................\r\n+***+===-----------++..:::::::::----------:::::..::----==--=***=-==+=---:::--=%@#==:................\r\n***+==----------::-=-..::::::::::::-----::::::...::::::-------------:::::::--=%%*=-.................\r\n*#*=--::------=*+::::..:::::::::::::::::::::::...::::::::::::::::::::::::::--=#+=-:.................\r\n#*=--::::::--=+#*+-:::::::::::::::::::::::::::...:::::::::::::::::::::::::---+=--:..................\r\n*+=---------+*#****=-::::::::::::::::::::::::....::::::::::::::::::::::::---==--:...................\r\n+=========++*##*****+-:::::::::::::::::::::::::..::::::-::::::::::::::::----=--:....................\r\n===+++****++***+++++++-::::::::::::::::::::::::::::::::-:::::::::::::::------:......................\r\n++**##%#**+++++++++++++:::::::::::::::::--=+=----==*+=--::::::::::::::----::........................\r\n**#%%%%%#*+++++++++=====:::---:::::--::::::---====----:::::::::::::-:----:..........................\r\n**###%%##**++++++=====---:-::::--:---::::::::::::::::::::--:::-----------:..........................\r\n++*##%%###**++++======-------::-----=++++++++=======--------------------:...........................\r\n++**######***+++===========---------::---========+++++++++=------------:............................\r\n++*##%%##**++++=======++**+:-------::::::--------====-----------------:.............................\r\n*##%%%#**++++++==----=+*##+::--==---::::::----=----------------====-:...............................\r\n##%%%#*++==++++=----=+***#*::-------:::::::::::::------------=======:...............................\r\n%%%%##*+===++++====+****#@*::--------::::::::::::::::::-----==++==+%=:..............................\r\n%%%%##*+====++++********%@#::------=---::::::::::::::-----=++++===*@%:..............................\r\n#%%%%#*+===++**####*+***%@%-::------======-------------=++++=====+%@%#*+=::.................::::::::\r\n####*++++++*###%##+=*#+*%@%=---------======++++++++++++++=======+#@@%%%%%%*=::::::::::::::::::::::::\r\n***+====+******+=-=+%***#%%*---------========++++++++++========+#@@@@%%%@%***-:::::::::::::..:::.:::\r\n+++====+++++++++==+*%##*#%%%*--::--------===+++++++==========++%@@@@@@@@@#****++-::::::...::::::::::\r\n+++++++******+++++++#%%###%%%*------------==================+*%@@@@@@@@@#*#*##******+=-::::....:::::<\/pre>\n<p>--<\/p>\n<h2>jp2a<\/h2>\n<ul>\n<li><a href=\"https:\/\/qastack.cn\/graphicdesign\/18352\/is-there-a-command-line-program-that-can-output-ascii-art-as-an-image\" target=\"_blank\" rel=\"noopener\">\u662f\u5426\u6709\u4e00\u4e2a\u547d\u4ee4\u884c\u7a0b\u5e8f\u53ef\u4ee5\u5c06\u56fe\u50cf\u8f6c\u6362\u4e3aASCII\u827a\u672f\u56fe\u50cf\uff1f<\/a><\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\"># jp2a --width=120 iu.jpg &gt; iu.txt<\/pre>\n<p>\u7d50\u679c<\/p>\n<pre class=\"font-size:12 line-height:12 height-set:false inline-margin:0 toolbar-delay:false show-title:false show-lang:2 striped:false marking:false wrap:false wrap-toggle:false show-plain-default:true lang:default decode:true\">':lOKKXXKKKKKKKKK00Oo;'.......................':ddxxxxxxkxxxxxkxxxxdxxkkxxxddddx\r\nooxOKXXXKKKKKKKK0Oc..............................cxxxkxxxxkkxxxxxkkxxxddxxxkkxxx\r\n0K000KXXKKKKKKKKk'.............,'.................;xxxkkkxxxkkkkxxxxxkkkkxxdddxx\r\nKKK00KXXXXXXKKKO'.............',,'.................,dxxkkkkkxxxkOkkkxddxxkOOkkxx\r\nKKKK0KXXXXXXKKKl.......   .....,;::;,,,,'............dxxxkkOkkkxxxkOOkkkxxdddxxk\r\nKKKKK0XXXXXXXKk......     ....,;:coolllcc::,''..'....ckkkxxxkOOOkkkxddxxkOOOkkxx\r\nKKKKK0KXXXXXX0'  .      .....,:cldxxxxxxddddo:,..'...'xkkkkkxxxxkOOOkkkxxdddxxkk\r\nKKKKKKKXXXXXXl        .....',:lodxkOOOOOkkkkxxo:'.....cxkOOOOkkkxxxxxkOOOOOkkxxd\r\nKKKKKK0KXXXXXd       .  ...,;cloxxkOO0000OOOOkxdl,....;xkxxkOOOOOkkxxxdddddxxkkO\r\nKKKKKKKKXXXXX0        ....,,:ccdxkOOO0000000OOkxl:....;xkkkxxxxxkkOOOOOOOkkxxxdd\r\nKKKKKKK0XXXXXK'        ...,',:lxkkOOOO000000Oxdlcodo;..:kOOOOkkkxxxddddxxxkkOO00\r\nKKKKKKK0KXXXXXx         ....'cdxddooodxkO000Okxx:':c';.,okOOOOOOOOOkkkkxxxddddoo\r\nKKKKKKKKKXXXXXKo        ....::::cclodxxxkOOOOkx:..;oldo:oxxxkkkkkkkOOOO000000000\r\nKKKKKKKK0XXXXXKKx.     ..':oodxdl;,;odxxxkO00kxooddxxkkxkkkOkkkkxxxxdddooooooooo\r\nKKKKKKKK0KKXXXKK0l;:....;odxxdl';'..ddlxxkkOOOOOOOOOOOOOOOOOOOOOOOOkkkkkkkkkkkkk\r\nKKKKKKKKK0KKKKKKKKddo::.'ldxxxdooooodxkkkkkkOOOOOOOOOOOOOOO000000000OOOOOOOOOkkk\r\nKKKKKKKKK0KKKKKXKKKOdc;..;dxxkkkkkkkOOOOkkxxkOOOkkkkkkkO0OOOOkkxxxxdddddddddxxxx\r\n0KKK0000000KKKKKKKKK0x;.''cdxxxkOOOOO00OkxdodkOOkxxxxkkOOOOOkkOOOOOOOOO000KKKKKK\r\n00000000000KKKKKKKKKK0c,,;:ldxxxkkOOO00Okdodloxxxkxddxk00OOO00000KKKK0OOkxxdoooo\r\n00000000000KKKKKKKKKKKO;:oOxodxxxxkkOOOOkxxxxxxxdooddx0OO000KKKKK0OkkkkkkkkOOO00\r\n000000000000KKKKKKKKKKKk;dO00dddxxxxkkxdoolc;,''''oxxdodxxO0KXK0OOOO00000KKXKK0O\r\n00000000000OKKKKKKKKKKKKOllO00doddxxxxxddoc:;,,;cdkxdddxddoolllodxkO0KKK0Okkkkxk\r\n00000OOOOOOO0KKKKKKKKKKKK0Olx0koddddxxxxxxxxdxxxkkkkO00O00K00000OkOxc:;:codxO00X\r\n0000OOOOOOOOO0KKKKKKKKKKKK00oOOOddddddxxxxdxxxxxxkod00Okddkk0KK0dddx00Odoolcc:;;\r\nOOOOOOOOOOOOk00000KKKKKKKK0OxO000Oxdxdddddddxxxdo;dx0000kddx0K00Oxdk0KK0xooooddd\r\nOOOOOOOOOOOOkO000000000000OkO00000KKOkkkxxxxddolx0KK0OO0000000KKK000K00K0kxdllll\r\nOOOOOOkkkkkkkkO0OOOOOOOOOOOO0000KKKKKKKKKK0kkOO0OOKK0KKKKKKKKKKKKK00000KOxKNNXKO\r\nkkkkxkkkkxxxxxOOOOOOOOOOOkOK00O0KXXXXXXXKKK0x;k00KKKKKKKKKKKKKKKKKK000OdkkXWWWNX\r\n';ll':dxxxxxxxkOOOOOkkkkk00K0O000KKKXXXXXXXKoOXXKKKKKKKKKKKKK0KKKKKKK000O0XWWMWW\r\n';'..'c;,cdddddkkkkkkxxOKKK0K0O0000KKKKKKKXKXKKKKKKKKKKKKKK0kxOkk0KKK000OOXWWKXW\r\n......,,::ooddokkkxxxk0XXXK0Ok0OO0000KKKKXXXXXXKXKKKKKKKKkxxOKKK00KKK000OONMWWKO\r\n...''.   .loooodxxxxkKKX0XKKOOOKOO000KXXXXXXXXKXXXXKKKKKKKo0KKKKKKKKKK0OOx:okKWN\r\n,,..''    :looolxkO0XXKKKKOd00O0K00KKXXXXXXXXXXXXKKKKKKKKKxKKKKKKKKKKKKOkkdl:;,c\r\n,.        ,clo0XNNNNNNNNXXX00XK00KKKKKKKXXXXXXXXXKKKKKKKKKxKKKKKKKKKKKKOOkxxxxdo\r\n ...     .;:dXNNNNNNNNNNNNNXXkKXKKXKKKKKKKXXXXXXKKKKKKKKKKkKKKKKKKKKKKK0kkxxxxxx\r\n    ..   .;cXXNNNNNNNNNNNNNNNNXKXXXXKKKKKKXXXXXXKKKKKKKKKKK0KKKKKKKKKKKKkxxxxxxx\r\n........'',0XNNNNNNNNNNNNNNNNNNXKXXXKKKKKKKKXKXXKKKKKKKKKKKKKKKKKKKKKKKK0xxxxxxx\r\n,;;;;;,,';lXXNNNNNNNNNNNN00NNNNNX0KXXKKKKKKKKKKXXXXKKKKKKKKKKKKKKKKKKKKKKxxxxxkx\r\n;;;;;,',,;l0XXXNNNNNNNNKkNNNNNNNN0OKKXKOooOKKkKKXXXXXXXKKKKKKKKKKKKKKKKKKkxxxxkk\r\n,,,,,';::::k0KKXXXNNNNXdNNNNNNNNNXdOKKdO00Oo000KK00KXXXKKKKKKKKKKKKKKKKK0kxxxxxx<\/pre>\n<p>--<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"6888\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;1,422&nbsp;total views<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>-- Python Conve...<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"6888\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;1,422&nbsp;total views<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[334],"tags":[335],"_links":{"self":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/6888"}],"collection":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6888"}],"version-history":[{"count":20,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/6888\/revisions"}],"predecessor-version":[{"id":12067,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/6888\/revisions\/12067"}],"wp:attachment":[{"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.hoyo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}