文章目录
Python 图片转 base64
base64 是一种用于传输 8Bit 字节码的编码方式,基于 64 个可打印字符来表示二进制数据
1.jpg

读取图片二进制数据,用 base64 加密(结果仍是 bytes 类型),保存
import base64
encoded = base64.b64encode(open('1.jpg', 'rb').read())
print(encoded)
open('1.txt', 'wb').write(encoded) # 保存
import base64
decoded = base64.b64decode(open('1.txt', 'rb').read())
open('2.jpg', 'wb').write(decoded) # 保存
import base64
encoded = base64.b64encode(open('1.jpg', 'rb').read())
print(encoded.decode())
# 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
import base64
decoded = '/9j/4QAwRXhpZgAATU0AKgAAAAgAAQExAAIAAAAOAAAAGgAAAAB3d3cubWVpdHUuY29tAP/bAEMAAgEBAQEBAgEBAQICAgICBAMCAgICBQQEAwQGBQYGBgUGBgYHCQgGBwkHBgYICwgJCgoKCgoGCAsMCwoMCQoKCv/bAEMBAgICAgICBQMDBQoHBgcKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCv/AABEIADIAMgMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOw/aK13TU+CXjnTrK98y40uKCLVju/1cjFHEfHcKwJHuK/H8udV5jRk+rdvPdH9lU6SupNKzTseKfCzUUFlLtlB3SnCn0r28Wpc6uelTpxlE9L8HeF9Y+IV8mm6Dq2nxO5+VriVsMccY2g1McJU5b3seTmOcYLARvOEpW7L/Noq/Gv4d+MvhdA1n4/0c20V7CwtLuJvMguDjOEkHG4f3ThvbHNaU6NSnNNbCy7NctzeEvYT95bp6SXy/VXR2/grxNb3fgPSrm+ZhdNYRMZR9+T5QA36DmvGxlGMcQ3Ha+xt7GfO4rVHnn/BQj4zeCvhz4T0b9o9J7W58R+KHfTdU8MNchJbjUreJcX+37wt3h2eY46SLtHL17fDeAr5lUeF2hDXm7RfT1vt/kj55V/7EnPDSjeK96n2ae8W/wC6/wALH58X37WP7R9zezXMfxe1mBZJWZYbUpHFGCc7UXadqjoB2GBX6ZHIsqjFL2Kfre/z13PJeZ46Tv7Vq/ax9t+DjrOo/sffFHU9VvWu7qbUori5uJZNzSyN5eWY9zmvyuv7KOd4aMVZJWX4n3cuZNXerUjC8C2V0fAOsa9FuK2NzaQymNSQvnM+ST2G2Nh+IrqryjLERi+t/wADpU3Ccaa63f3W/wAz6D/Zl8M2T6xZ6jf3LW1vakTKqnEty2OOf4F9hye2ByW5q+p8nxDOpGjKEFdvT0/4J9Ya7F8Jvi/8NNQ+FvxG01LjQtTg8q+gRvLaEqcpMjjmOVGAZXzkEc5BIrspyi7NH5U6eYZfjFiKLamtn+np3PmnRP2FfjDrPxI+HxT4i2WmeF/BcV5beIdaI3Prdo6osaQwnADNhXMj4WNgcBulc9GhSnHFQrR+Jrlfbre/4eZ9/juNadHD0amGjzVWveg72WlrO3nqrdPU+Fvif8F/EX7Vf/BSXxn8Jo/Ez6j4e8IeIbnTZNYgUCO20q0mMaxoASBJI4YEjq7M3QAD7PCzw3D+QwnFatX16yff0X4aHO8biM5tiKq5W0tF0XZX7n21pvwS+DWj6db6TZ/DLSBDawJDEG02MnaoCjkrk8DvXw88yx1Sbm6ju9d2dKgkrJHjvglYP+GNPirZ2cf/AB7vEc92z5ZrirqX9u4aT6/8E+3rySnBeUiv+zpqlnbeBPHXhLW4FC6vpNvcWDhAzG5t5gBEAQc70uGPt5ea2xtPnxNKS+zL8H/lYMTGqq1GtDZXi/Rq9/k1+J5f8WP22tb0m+n8CfBG8M9/EcTajDuLSOCcw2+PvvkBc92YYBFff5Pw7S5PrGLXS6i9NO7/AMj4zOM0U5exo97NrX5I+0/2Jvhr8arbyPGnx/8AFupXmuauoFh4NuHjFlo8XDGSQIMyTHPG4kKowBnNeNnNfKpVIwwcFGFk7q95P5vb8z5Wq8bUpzTbai7N/p69zzP/AIKI/wDBQz4rfBfUvF3witdLNhqeh+IobDTLSzwttNG9sLuG/vJGHmTLtHy28ZSNnUhyyqQ2mX5ZHGxpyv7lnzLrdO1l+bb6bHTgMvw1CmqvxTkk1LsndOy2vfS+/U5n/gmz8KP+FffAA+PvFZkXXfG162q3l3d/6ySN8mPc3qcs595DXNxJi/rOPVGGsaatZd+v+XyPUpWpQ5Vp/Wh7u0vzHbdZGeCGr57lga3kfNX7P/iK38Wfsk/GyFFlxbz2scat97lIzzxxWmZUJUM3wnn/AJs+xVaFatB9FzfkeRfGr4l3fgjwfceEdEVltLbWbV9R1i3VTdyySsYvs6c4SJFEvzD5pGkwcLwf0bJuH8NShDHYnVtfD011u+78tvU+NznP8VisXLC0XaKenfTr87/8MP8A2QvDPhL4ZfHab41+OLG1v1i17+zfhxoc4V0ur9oxNLcTbTgx2MbKjgf8t2RM5yRlxHmM6+DnCj8Nry6O17RX/bz1/wAK8zDKcslisXTwsnZvdrWySvK3Z9F5tvofbHwn8Fv4D+L2geJb342a9rWq+KL25iub7Vb3eqpJH+5QQgCJRDIBtAGCDtPGMfBVcXCvGMeRRt26+p9NiMCoZZi4qHuwiuVO2lnd2aV9Vu3qfCPxt8DeI/iZ8cPGPw5v/Guo+JdUvfF/hy2uNT1G6M0+yRZ4pdznk4EgOOAu/aAFAA+1y7F06GXxr8igkpuy20tb8jysxwsKGJjRg7pJLZK3W2mnU/QHwj4bv9W1XTPhd4Lt40HlJBAWXMVvBGuC5HcADp3JA718BiMRChTli6z63t1beyXqcdWUVB3R6mP2IdOcb5fF2plzyxXyVBPfA2nH0ycVxrPsxauqMfx/zPGeNop7nwT+xJcXV/8AsP8Axb0/XLGVNVjusajYTqYZoThBhwwBX5VyCa+jz6jGPEOFpw1j0fr/AJH3WGxLlh415O1ua/yX6nlHwRXwp8UvEGs3vir7RLpd/rQ8+xVgqXNjxIEjPG1ySwVxjJGAwNfrSoVI5Y6NP4lFJeqWn+Z+cYvEpZgq0tm2/v8Av6Hn+r/HzWYf2kB47u/Cw0yz0q7ltdD8MRqqR6XZ+Yc26qPlVifmYj7zEkk8GvmMZlsquWzoOV5P4n3lvf06LyPrclxkMJi6ddL/ADtt/XmfoH4C8Q/ETWPBs/jjwP4ZuNX1ex0SafSPCT6ZFLeS3PlE7YQ6sAx4GQcjse1fnNGgvrCpzmkm0m+i8/Q+yzrE4OjhpTqRaW71avbZO3n8j5Q/YUh1yH4+av4q+LFvdW+qiPUZ9dtruzkSe3vhdQkB4mG9CpZgARkCvss/ilhFRo/D7iXbl1/Pc+Mo1XWpe2vzSlzN+r/y2P0X/Yh1zwZ4g+KPiPxG/iK0bT9E8NGa5vGuVVLffKMs5J+QBY3JJxjHNfA59RdPD0VPdy0S6tL/AIJ4+YzxHsuSMXduxrXv/BYL/gn1YXs1ivxYvrgQytGJ7TwfqUsUmDjcjrDh1PUMOCCCK1jk2e8q/cr5yjf5+9uef/YOOev6/wDAPjb4KXniy5/Yh8b+M/FIuINa1f4K6ZNfXd4pWaW5iW/tXlkPUu2xMk89K+kzr2cuJ8Eoax5+nrE+jylTjlVanN2alJW7XimfEPwE8V6jpXjzwuLKdgsbrHtaTHmMrlgqliFRsMFUEgZwD1NfrFKVpnzOKhGVGVztNFsNB+M37Qusapp2mSxW9qz25gUgi4vHjEMMSggEsGyz8YVYyckc18ln+LeDouMX8T+6Kd2/0Xds+r4YwDrJSqa8qfzctEv19NT9Dfg5qj+BNYsII58JHCkYlHG4jAPP15r8mlU55PmPvc4wkMVg3FLb+rnVft6eH/h74M8S+Fv2z5dPnWfV9Bl8L+ILjTbPzGmYMtzb3EwXlmVIp4t3LFdg5CjHv4R1KuDjh4PRPmV/ut+Nz8oyqNSFevhXutUvzt+B5P8AF340/DLwb+xBbaJ4caJtZ+MN/wDaLi4B2yahoMBEgbYQGihLkREuBuYSAZrhp4bGYviCTtpQ08lK34vrp5H0WAoU5YiNSvK8IRbS/vydn9yXyuj5Wu/GmhWd1LaTyIrxSMjrjGCDgjGOK+yjl94q6OqWOfM7HtfgWWRv+CQ2o6g0jGeX4R3Syzk/O4XWblQC3UgLwPQcVwZml/rlg1/e/RHhYJv6niv8X/th8cfD2OOLw4Z4o1V47m0aN1GCrZbkHsa/U4/AfP1v4iX9bHu/7D+k6VHo+u6tHplut0fEF0puRCokx5h43YzivyPjWpU/tXku7W26fcfrvB9OmsmhOyv36n1h4fAe1iLjJDAjPbmvjX8J7OL+JnoX7XwE/wCwPKZxvMfjDRjHv52kz4OPTgkfQmvpsk1mvn+R+QYj3eJHb+V/kfCfjq3t5viboyTQI4/tFIMMoP7pGLIn+6p5A6A8ivXyht05+p9bm8YwpQ5Vb3f0R8o6/fXs2u3s015KztdyFmaQkkljkk19ckrHhpKx/9k='
decoded = decoded.encode('raw_unicode_escape') # str转bytes
decoded = base64.b64decode(decoded)
open('2.jpg', 'wb').write(decoded) # 保存
requirements.txt
python-magic
python-magic-bin;platform_system=="Windows"
安装
pip install -r requirements.txt
代码
import base64
import magic
bytes = open('1.jpg', 'rb').read()
mimetype = magic.from_buffer(bytes, mime=True)
prefix = 'data:{};base64,'.format(mimetype)
decoded = prefix + base64.b64encode(bytes).decode()
print(decoded)
# data:image/jpeg;base64,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
TODO
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决