【发布时间】:2019-01-29 21:09:40
【问题描述】:
我在 javascript 中有一个图像的 base64 编码字符串:
var theString64 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAAAqCAYAAAAdz21RAAAJyklEQVRoQ+2ZC1QT2RnH70xmEt5BVCQ8BAWlArZa3FOyvt+7tuXIqvWxFltcV9cHiIAgLBCKgICo+KR68IUWlSpqrZZT3MUqYuWhLkYFy1N5GgKEV8gkMz03ZrazcZAQfOzazDk5Se589373/u433733PwgwXHoRQPSqZagEDOD0DAIDOAM4PQnoWc0QcfqCI+pA60Dq4nZgiMYeQucAACgAAKn5ppui78Fy+HlbF+Lju8Eq++QBOIb+/NBBAvvb39WvLULUqweu84XbqhcUNZjgmJRSQtF7LjUu/E8MeIj3Mj+Bq/v4+10dsqUHk6JvaKDq4ge2q4sd7C+y8svNNrYOIx93ymQzDiaLHmgGwVYf3RAqmiJXAWn6TpG4Hx862Q4GHLY5ckcahuHzd0YHjQYAEJqOo/7btgcZGZvE3swvEBTkZLXT5SzRiTKiF/6EUQPL4OCZs07/p+/REc75KjRmrqTyYV5WVlYvoy3aDtaDH2xLdNJ5lZIsTI0L2wEAUA7AFo7rlckYDDjUb+PWiUNHCO60NDV4Hd2fVKJxgAeLUkpVKvLh7tiQFRCAf3hCKBfHZqsAJW2ufRZ++ti+8jlLlph6uP4yUC6XPzEztwhSKYmrhSU393hOmLylq0t23YI/dBsCEEze3Z15IDkqMyAifiuGc2eRFNmiaaMMRv3myKTYmurKlOyMtBYIyD88IYz21VhdE5F54kBFQOSOBBzDl1AUJVEqVbmXTh36urq6GjD71ZdtbvbJcLFY/Ao8fcHBCUPthULesk+WPFEqFXl7YsO+AAColq8JHGc/0uGepL5h7rFDyXeDonf+A8VQT4Vcno7h3MkIgjjXVZUJSRInR45xLkFIQClJ5a2uzq70Z1VPCz0mTHpEUUCpIBTnEQQdxsXx2RQACkCSMoVCnonxeIs5CGJ24e/nxnp5fGwtcHJ42CZpnnokdUdpUPTOHG1fVU++m+Lg4uaPYRxviqSaoa/T546HrVq25kp/tipKdbOs8EbQtWvXFNpRNxhw6jwXsC1+K9fYaOvl0392KCsrkwd8nZCI49xlJ84dHbtw/qL5lpaWp0uLSn5RWfe4xdTIijtz9rwrFEVWlD96EOo24aPyzrb2dZUPxRdksuc9glFu1s7jPCq62mSrvvv33as9WBdn2tRPznIw3K3o4Z2JPbWd3SPG2Fq7jnF71Fj//OOO9lbJ2HHjnzY31k3Fjc3s+vKVd+XK+um/+W26kui9X3zj6h4P4dyZ/dmqlIp7jwvzduXm5naw5ejBgkO8/fxsXJ08KjtapIvTUrd/ExKTUqPolR9LjY8QBUTEJ/B4RusJQnGJQhEcIcleDOcuUCnJ8orHj1aOHT/+Tsm9m6OuZ2e3wRBeuTpwlMDRoeRWfo5TQU4OzI2cwKikMyiK2KSIQmbC3GRvb89dtmZzpaSx3qetVdpIg+NbDVv+qi/eAlKlKk+JCZkWGJV4RqVUluyNj9jB3i9W21hNPnxjOY657cADo5L/hVBkw7OK/8Q4/WxcYXX1U4+so4eqA6OSMjEMm63o7TmFoBwTigIUCgCpJIhCSVPTDfvRo+/eLsqzy798uRvO6h/WhjgPtxMU3845b5efn9/1MoclnkNRjs2umODpcBBOTk7cxX6bKqVNDYukLZIGCK6x/tk0K2vBVhzHZ7H52pcYeeLl4qAsSY0Ljw+MSjrdV7+0bGNg+nmTiwMTHLp2S9RiC0v+EYJQ5XE46MgUUbAXdOgflhDMM+ZuzL14agKf76hedXt7e1CptJP4aPIkW4GTYyEruJcw1eACo5KyUAS1SYkJntYXOPiomlsMm2VkwtvA9KVUEkhraxchFucRW6KTLigJonhvfETCptD4QB1t4TbrrYBTLxKukyebes//rAYgqFlHa/u6tF2iDLi1WLM+ZLylwPYuIZdn7InbtgmusEHRyReVCuKvLU1NefqAc3FxwRf6flXFjLgXzQ1TAKEkhjk43mHzlZoQfhyCI0mqe09s6KpVX/iPs3YcVaCD7e8BXJhYNteDyXHMqMM2Rybu5+LclQ9KbzvkZGWpc5a7uzs2fcHSFaYWZvsBhagjjqLI5pqK2rmmxlzecDvB7cLSglF5WVnwUQWr14eNtrKxLmCUoUHRyRkAQWxTRMFz4OzDNhcs9atqb5F8JpG8qHNxdatoaWv1un4h4/Gni/+43Ixvvo/p63l13Zwzx3Y1bdy2fYuJiUkMRYGO588qpvPNh//KfIjF3tfbIh3Sxlqv9IO7K9hWVXozqNPpAbcFmJaheqPq7e1tZmpqw8vMPCxlOhEKhUY2Li7mfL69FYdLGUur6muzs0+2A+CJ+Ph6WWiOS5rkO4Pj4+vOZ5Z9+vnn5jwcRy8ePy6jN8Y+vr5DyouLO8RiMbl8+ZeW5eXF7cXFxSqhUMhj9wXIefPmGduM8bTDeZRpes7fxJ5GRthINzezV/v1P1ueCWJy5JscMSguhox+sEAglBTwdSJGb7WtAH0SYFbTFgtoJ3S55pg2AwEgD+YM7UvbXh2cjNMDbc9Wpt3W63yhAKj7QJ88dLFlz3EDgfYGbAdyFh2su758sZUPxFbdL4OspOf0GMAZwOlJQM9qhogzgNOTgJ7VEJFINCDpXCQS0dI5vbhA+Zx1ydazTz+JahCcrlK1ekAikYi5N1PL553tbSvSdsXeH4Ds/ZOA87pODg6cuzsestSvqqNV6pO2O66IRbeCkKGMzZS86ZcqbPfoSWRK6mwvg947+EGBc3Fx4cIDt6xF4nM4NaFQCxwEw2VK2bRsrjk042z32CT13bFhUN6h3x+8d2jqHDWYR9XJyYkHtTEWcBAaHhS9858/kKdR1Lmu8okw8/jhGl0ldXlP75GDSZGXWF5BvleAbwscujZItNCCb/EXbdlcRakqO2UdZ62GDs3oT1KvfVJ+niRbu9k0//dK7S1FHBwTJyAiPoVNNicUyqcqFXHL2NhknQ6SOlzxf1SPKD1hbyPiYNtYYFTSWTZ5mujpKcJMTOb3JXNrSepQBe7vDf17Cb43CQ6uqnCQ6rdfm0LjQ7TlaSibNzVJVL9esmgD2z0WSf3DBtcqeeH3qPDeXYGzIw9Ov7xXQY0YYmnbl5Td9qKxqC/pWktS/zDBAbiP+93qMgRBhlEIpaJ3xiRJyXK/vflz4aSJPmxS9p1vL7xgk7lZJHUIbkAb9Hf13MJHdUDSuUgkoqVztXoKZWxAUfDY9f0ll2PUtaxjUk9PT15f8nTfMvcrkvqPE1xoaOiApPPExESmdM48fjHZ0RI3/Y1oJGtt2VxXSf1dBZLOft6lrPQ62fxdSuo6w3ntWfWNtPJ/2Mi7jLgPCq8BnJ7T+V95tZKF5SCXjwAAAABJRU5ErkJggg=='
我尝试在 Ruby 中执行以下操作,以使用 Prawn::Document#image 对虾库中包含的图像制作一个文档:
theImage = Base64.decode64(theString64)
image theImage, at: [215, 195]
并收到错误:pathname contains null byte。
我需要解析这个还是有其他问题?我没有看到字符串中有任何空字符。
我试过了
.gsub(%r{\u0000}, "")
它没有帮助。
【问题讨论】:
-
你能提供一个minimal reproducible example的问题吗?我可以将
theString64设置为什么值,以便重现错误? -
是的,肯定在上面
-
我无法复制。一方面,第一行代码是无效的 javascript,而第二行是(有效的)ruby。但是,如果我对您的代码 实际 的外观做出最佳猜测,并设置
theString64 = "data:image/png;......"; Base64.decode64(theString64)(全部为 ruby,没有 javascript),那么我不会收到任何错误消息。请仔细检查您是否提供了minimal reproducible example - 强调“可验证”一词。 -
自我上次发表评论以来,您已多次更新问题,但我仍然无法重现该问题。这个 JavaScript 变量是如何在 ruby 进程中结束的?正如我上面所说,如果我只是在 ruby 中定义它,那么就没有错误。我认为错误可以在 两行 ruby 代码中重现:定义变量,然后运行
Base64.decode64(theString64)。如何定义变量以获取该错误?
标签: javascript ruby string base64