{"rsdb":{"rid":"241576","subhead":"","postdate":"0","aid":"166344","fid":"77","uid":"1","topic":"1","content":"
\n

Python\u751f\u6210\u968f\u673a\u9a8c\u8bc1\u7801\uff0c\u9700\u8981\u4f7f\u7528PIL\u6a21\u5757.<\/strong><\/p> \n

\u5b89\u88c5\uff1a<\/strong><\/p> \n

\n
\n
\n \n \n \n
\n
\n 1\n <\/div> <\/td> \n
\n
\n
\n pip3 install pillow<\/code>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n <\/div> \n

\u57fa\u672c\u4f7f\u7528<\/h2> \n

1. \u521b\u5efa\u56fe\u7247<\/strong><\/p> \n

\n
\n
\n \n \n \n
\n
\n 1\n <\/div> \n
\n 2\n <\/div> \n
\n 3\n <\/div> \n
\n 4\n <\/div> \n
\n 5\n <\/div> \n
\n 6\n <\/div> \n
\n 7\n <\/div> \n
\n 8\n <\/div> \n
\n 9\n <\/div> <\/td> \n
\n
\n
\n from<\/code> \n PIL <\/code>\n import<\/code> \n Image<\/code>\n <\/div> \n
\n img <\/code>\n =<\/code> \n Image.new(mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n , size<\/code>\n =<\/code>\n (<\/code>\n 120<\/code>\n , <\/code>\n 30<\/code>\n ), color<\/code>\n =<\/code>\n (<\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n ))<\/code>\n <\/div> \n
\n  <\/code> \n <\/div> \n
\n # \u5728\u56fe\u7247\u67e5\u770b\u5668\u4e2d\u6253\u5f00<\/code>\n <\/div> \n
\n # img.show()<\/code>\n <\/div> \n
\n  <\/code> \n <\/div> \n
\n # \u4fdd\u5b58\u5728\u672c\u5730<\/code>\n <\/div> \n
\n with <\/code>\n open<\/code>\n (<\/code>\n 'code.png'<\/code>\n ,<\/code>\n 'wb'<\/code>\n ) as f:<\/code>\n <\/div> \n
\n     <\/code>\n img.save(f,<\/code>\n format<\/code>\n =<\/code>\n 'png'<\/code>\n )<\/code>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n <\/div> \n

2. \u521b\u5efa\u753b\u7b14\uff0c\u7528\u4e8e\u5728\u56fe\u7247\u4e0a\u753b\u4efb\u610f\u5185\u5bb9<\/strong><\/p> \n

\n
\n
\n \n \n \n
\n
\n 1\n <\/div> \n
\n 2\n <\/div> <\/td> \n
\n
\n
\n img <\/code>\n =<\/code> \n Image.new(mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n , size<\/code>\n =<\/code>\n (<\/code>\n 120<\/code>\n , <\/code>\n 30<\/code>\n ), color<\/code>\n =<\/code>\n (<\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n ))<\/code>\n <\/div> \n
\n draw <\/code>\n =<\/code> \n ImageDraw.Draw(img, mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n )<\/code>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n <\/div> \n

3. \u753b\u70b9<\/strong><\/p> \n

\n
\n
\n \n \n \n
\n
\n 1\n <\/div> \n
\n 2\n <\/div> \n
\n 3\n <\/div> \n
\n 4\n <\/div> \n
\n 5\n <\/div> \n
\n 6\n <\/div> <\/td> \n
\n
\n
\n img <\/code>\n =<\/code> \n Image.new(mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n , size<\/code>\n =<\/code>\n (<\/code>\n 120<\/code>\n , <\/code>\n 30<\/code>\n ), color<\/code>\n =<\/code>\n (<\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n ))<\/code>\n <\/div> \n
\n draw <\/code>\n =<\/code> \n ImageDraw.Draw(img, mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n )<\/code>\n <\/div> \n
\n # \u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u5750\u6807<\/code>\n <\/div> \n
\n # \u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u989c\u8272<\/code>\n <\/div> \n
\n draw.point([<\/code>\n 100<\/code>\n , <\/code>\n 100<\/code>\n ], fill<\/code>\n =<\/code>\n "red"<\/code>\n )<\/code>\n <\/div> \n
\n draw.point([<\/code>\n 300<\/code>\n , <\/code>\n 300<\/code>\n ], fill<\/code>\n =<\/code>\n (<\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n ))<\/code>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n <\/div> \n

4. \u753b\u7ebf<\/strong><\/p> \n

\n
\n
\n \n \n \n
\n
\n 1<\/strong>\n <\/div> \n
\n 2<\/strong>\n <\/div> \n
\n 3<\/strong>\n <\/div> \n
\n 4<\/strong>\n <\/div> \n
\n 5<\/strong>\n <\/div> \n
\n 6<\/strong>\n <\/div> <\/td> \n
\n
\n
\n img <\/code>=<\/code> Image.new(mode<\/code>=<\/code>'RGB'<\/code>, size<\/code>=<\/code>(<\/code>120<\/code>, <\/code>30<\/code>), color<\/code>=<\/code>(<\/code>255<\/code>, <\/code>255<\/code>, <\/code>255<\/code>))<\/code><\/strong>\n <\/div> \n
\n draw <\/code>=<\/code> ImageDraw.Draw(img, mode<\/code>=<\/code>'RGB'<\/code>)<\/code><\/strong>\n <\/div> \n
\n # \u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u8d77\u59cb\u5750\u6807\u548c\u7ed3\u675f\u5750\u6807<\/code><\/strong>\n <\/div> \n
\n # \u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u989c\u8272<\/code><\/strong>\n <\/div> \n
\n draw.line((<\/code>100<\/code>,<\/code>100<\/code>,<\/code>100<\/code>,<\/code>300<\/code>), fill<\/code>=<\/code>'red'<\/code>)<\/code><\/strong>\n <\/div> \n
\n draw.line((<\/code>100<\/code>,<\/code>100<\/code>,<\/code>300<\/code>,<\/code>100<\/code>), fill<\/code>=<\/code>(<\/code>255<\/code>, <\/code>255<\/code>, <\/code>255<\/code>))<\/code><\/strong>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n <\/div> \n

5. \u753b\u5706<\/strong><\/p> \n

\n
\n
\n \n \n \n
\n
\n 1\n <\/div> \n
\n 2\n <\/div> \n
\n 3\n <\/div> \n
\n 4\n <\/div> \n
\n 5\n <\/div> \n
\n 6\n <\/div> \n
\n 7\n <\/div> <\/td> \n
\n
\n
\n img <\/code>\n =<\/code> \n Image.new(mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n , size<\/code>\n =<\/code>\n (<\/code>\n 120<\/code>\n , <\/code>\n 30<\/code>\n ), color<\/code>\n =<\/code>\n (<\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n ))<\/code>\n <\/div> \n
\n draw <\/code>\n =<\/code> \n ImageDraw.Draw(img, mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n )<\/code>\n <\/div> \n
\n # \u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u8d77\u59cb\u5750\u6807\u548c\u7ed3\u675f\u5750\u6807\uff08\u5706\u8981\u753b\u5728\u5176\u4e2d\u95f4\uff09<\/code>\n <\/div> \n
\n # \u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u5f00\u59cb\u89d2\u5ea6<\/code>\n <\/div> \n
\n # \u7b2c\u4e09\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u7ed3\u675f\u89d2\u5ea6<\/code>\n <\/div> \n
\n # \u7b2c\u56db\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u989c\u8272<\/code>\n <\/div> \n
\n draw.arc((<\/code>\n 100<\/code>\n ,<\/code>\n 100<\/code>\n ,<\/code>\n 300<\/code>\n ,<\/code>\n 300<\/code>\n ),<\/code>\n 0<\/code>\n ,<\/code>\n 90<\/code>\n ,fill<\/code>\n =<\/code>\n "red"<\/code>\n )<\/code>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n <\/div> \n

6. \u5199\u6587\u672c<\/strong><\/p> \n

\n
\n
\n \n \n \n
\n
\n 1\n <\/div> \n
\n 2\n <\/div> \n
\n 3\n <\/div> \n
\n 4\n <\/div> \n
\n 5\n <\/div> \n
\n 6\n <\/div> <\/td> \n
\n
\n
\n img <\/code>\n =<\/code> \n Image.new(mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n , size<\/code>\n =<\/code>\n (<\/code>\n 120<\/code>\n , <\/code>\n 30<\/code>\n ), color<\/code>\n =<\/code>\n (<\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n ))<\/code>\n <\/div> \n
\n draw <\/code>\n =<\/code> \n ImageDraw.Draw(img, mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n )<\/code>\n <\/div> \n
\n # \u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u8d77\u59cb\u5750\u6807<\/code>\n <\/div> \n
\n # \u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u5199\u5165\u5185\u5bb9<\/code>\n <\/div> \n
\n # \u7b2c\u4e09\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u989c\u8272<\/code>\n <\/div> \n
\n draw.text([<\/code>\n 0<\/code>\n ,<\/code>\n 0<\/code>\n ],<\/code>\n 'python<\/a>'<\/code>\n ,<\/code>\n "red"<\/code>\n )<\/code>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n <\/div> \n

7. \u7279\u6b8a\u5b57\u4f53\u6587\u5b57<\/strong><\/p> \n

\n
\n \n \n \n
\n
\n 1\n <\/div> \n
\n 2\n <\/div> \n
\n 3\n <\/div> \n
\n 4\n <\/div> \n
\n 5\n <\/div> \n
\n 6\n <\/div> \n
\n 7\n <\/div> \n
\n 8\n <\/div> \n
\n 9\n <\/div> \n
\n 10\n <\/div> <\/td> \n
\n
\n
\n img <\/code>\n =<\/code> \n Image.new(mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n , size<\/code>\n =<\/code>\n (<\/code>\n 120<\/code>\n , <\/code>\n 30<\/code>\n ), color<\/code>\n =<\/code>\n (<\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n , <\/code>\n 255<\/code>\n ))<\/code>\n <\/div> \n
\n draw <\/code>\n =<\/code> \n ImageDraw.Draw(img, mode<\/code>\n =<\/code>\n 'RGB'<\/code>\n )<\/code>\n <\/div> \n
\n # \u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u5b57\u4f53\u6587\u4ef6\u8def\u5f84<\/code>\n <\/div> \n
\n # \u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u5b57\u4f53\u5927\u5c0f<\/code>\n <\/div> \n
\n font <\/code>\n =<\/code> \n ImageFont.truetype(<\/code>\n "kumo.ttf"<\/code>\n , <\/code>\n 28<\/code>\n )<\/code>\n <\/div> \n
\n # \u7b2c\u4e00\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u8d77\u59cb\u5750\u6807<\/code>\n <\/div> \n
\n # \u7b2c\u4e8c\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u5199\u5165\u5185\u5bb9<\/code>\n <\/div> \n
\n # \u7b2c\u4e09\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u989c\u8272<\/code>\n <\/div> \n
\n # \u7b2c\u56db\u4e2a\u53c2\u6570\uff1a\u8868\u793a\u989c\u8272<\/code>\n <\/div> \n
\n draw.text([<\/code>\n 0<\/code>\n , <\/code>\n 0<\/code>\n ], <\/code>\n 'python<\/a>'<\/code>\n , <\/code>\n "red"<\/code>\n , font<\/code>\n =<\/code>\n font)<\/code>\n <\/div> \n <\/div> <\/td> \n <\/tr> \n <\/tbody> \n <\/table> \n <\/div> \n <\/div> \n

\u56fe\u7247\u9a8c\u8bc1\u7801\u7684\u751f\u6210<\/strong><\/h2> \n
\n
import<\/span> random\n<\/span>from<\/span> io import<\/span> BytesIO\n<\/span>from<\/span> PIL import<\/span> Image,ImageDraw,ImageFont\n<\/span>def<\/span> valid_color():\n\n   color<\/span>=(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))\n   <\/span>return<\/span> color\n\n<\/span>def<\/span> get_valid_code(request):\n    <\/span>'''<\/span>\u83b7\u53d6\u968f\u673a\u9a8c\u8bc1\u7801\u56fe\u7247<\/span>'''<\/span>\n    img<\/span>=Image.new(mode="<\/span>RGB<\/span>"<\/span>,size=(170,40),color=valid_color())#<\/span>\u521b\u5efa\u4e00\u5f20\u80cc\u666f\u56fe\u7247\u968f\u673a\u7684\u56fe\u7247<\/span>\n    draw=ImageDraw.Draw(img,mode="<\/span>RGB<\/span>"<\/span>)#<\/span>\u7ed9\u56fe\u7247\u521b\u5efa\u4e00\u4e2a\u753b\u7b14<\/span>\n    font=ImageFont.truetype(font="<\/span>blog\/static\/font\/kumo.ttf<\/span>"<\/span>,size=25)#<\/span>\u521b\u5efa\u5b57\u4f53<\/span>\n    valid_list=[]\n    <\/span>for<\/span> i in<\/span> range(5):\n","orderid":"0","title":"python\u968f\u673a\u56fe\u7247\u9a8c\u8bc1\u7801\u7684\u751f\u6210(\u4e00)","smalltitle":"","mid":"0","fname":"Python","special_id":"0","bak_id":"0","info":"0","hits":"413","pages":"2","comments":"0","posttime":"2017-11-23 08:31:53","list":"1511397113","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"python<\/A> \u968f\u673a<\/A> \u56fe\u7247<\/A> \u9a8c\u8bc1<\/A> \u751f\u6210<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"14.20.31.236","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"python\u968f\u673a\u56fe\u7247\u9a8c\u8bc1\u7801\u7684\u751f\u6210","lastview":"1703115823","digg_num":"0","digg_time":"0","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}