{"id":5237,"date":"2022-06-18T22:04:00","date_gmt":"2022-06-18T14:04:00","guid":{"rendered":"https:\/\/www.yumefx.com\/?p=5237"},"modified":"2022-06-18T22:31:26","modified_gmt":"2022-06-18T14:31:26","slug":"python%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97%e4%b9%8bpil","status":"publish","type":"post","link":"https:\/\/www.yumefx.com\/?p=5237","title":{"rendered":"Python\u5e38\u7528\u6a21\u5757\u4e4bPIL"},"content":{"rendered":"\n<h1 style=\"text-align: center;\">\u524d\u8a00<\/h1>\n<p>\u62d6\u66f4\u4e00\u65f6\u723d\uff0c\u4e00\u76f4\u62d6\u66f4\u4e00\u76f4\u723d\u3002<\/p>\n<p>\u4e0d\u8fc7\u7ee7\u7eed\u62d6\u4e0b\u53bb\uff0c\u4e0b\u534a\u5e74\u5c31\u6709\u7684\u75db\u82e6\u4e86\uff0c\u76ee\u524d\u5df2\u7ecf\u6b20\u4e86\u4e94\u7bc7\uff0c\u4e00\u4e2a\u591a\u6708\u7684\u5de5\u4f5c\u91cf\uff0c\u60f3\u60f3\u90fd\u4ee4\u4eba\u5934\u5927\u3002<\/p>\n<p>\u4e66\u56de\u6b63\u4f20\uff0c\u4eca\u5929\u66f4\u65b0\u7684\u662fPython\u5e38\u7528\u6a21\u5757\u7cfb\u5217\uff0c\u4e3b\u89d2\u662f\u7528\u4e8e\u56fe\u50cf\u5904\u7406\u7684\u7b2c\u4e09\u65b9\u5e93\u2014\u2014PIL\u3002<\/p>\n<h1>\u00a0<\/h1>\n<h1 style=\"text-align: center;\">PIL\u5e93\u7684\u4ecb\u7ecd<\/h1>\n<p>PIL(Python Image Library)\u662fpython\u7684\u7b2c\u4e09\u65b9\u56fe\u50cf\u5904\u7406\u5e93\uff0c\u4f46\u662f\u7531\u4e8e\u5176\u5f3a\u5927\u7684\u529f\u80fd\u4e0e\u4f17\u591a\u7684\u4f7f\u7528\u4eba\u6570\uff0c\u51e0\u4e4e\u5df2\u7ecf\u88ab\u8ba4\u4e3a\u662fpython\u5b98\u65b9\u56fe\u50cf\u5904\u7406\u5e93\u4e86\u3002<\/p>\n<p>PIL\u5386\u53f2\u60a0\u4e45\uff0c\u4f46\u5df2\u7ecf\u662f\u4e00\u4e2a\u5931\u6548\u7684\u5e93\u4e86\uff0c\u4f5c\u4e3a\u66ff\u4ee3\u7684\u662f<a href=\"http:\/\/python-pillow.org\/\" target=\"_blank\" rel=\"noopener\">pillow<\/a>\uff0cpillow\u53f7\u79f0\u662f<code>friendly fork for PIL<\/code>\uff0c\u5728PIL\u5e93\u57fa\u7840\u4e0a\u8fdb\u884c\u4e86\u6269\u5c55\uff0c\u5b8c\u5168\u517c\u5bb9PIL\u7684\u7528\u6cd5\uff0c\u529f\u80fd\u66f4\u52a0\u5f3a\u5927\u3002<\/p>\n<p>PIL\u5bf9\u56fe\u50cf\u7684\u5904\u7406\u4e3b\u8981\u5206\u4e3a\u4ee5\u4e0b\u51e0\u7c7b\uff1a<\/p>\n<ul>\n<li>\u56fe\u50cf\u5f52\u6863(Image Archives)\u3002PIL\u975e\u5e38\u9002\u5408\u4e8e\u56fe\u50cf\u5f52\u6863\u4ee5\u53ca\u56fe\u50cf\u7684\u6279\u5904\u7406\u4efb\u52a1\uff0c\u53ef\u4ee5\u4f7f\u7528Pillow\u521b\u5efa\u7f29\u7565\u56fe\uff0c\u8f6c\u6362\u56fe\u50cf\u683c\u5f0f\uff0c\u6253\u5370\u56fe\u50cf\u7b49\u7b49\u3002<\/li>\n<li>\u56fe\u50cf\u5c55\u793a(Image Display)\u3002PIL\u8f83\u65b0\u7684\u7248\u672c\u652f\u6301\u5305\u62ecTk PhotoImage\uff0cBitmapImage\u8fd8\u6709Windows DIB\u7b49\u63a5\u53e3\u3002PIL\u652f\u6301\u4f17\u591a\u7684GUI\u6846\u67b6\u63a5\u53e3\uff0c\u53ef\u4ee5\u7528\u4e8e\u56fe\u50cf\u5c55\u793a\u3002<\/li>\n<li>\u56fe\u50cf\u5904\u7406(Image Processing)\u3002PIL\u5305\u62ec\u4e86\u57fa\u7840\u7684\u56fe\u50cf\u5904\u7406\u51fd\u6570\uff0c\u5305\u62ec\u5bf9\u70b9\u7684\u5904\u7406\uff0c\u4f7f\u7528\u4f17\u591a\u7684\u5377\u79ef\u6838(convolution kernels)\u505a\u8fc7\u6ee4(filter),\u8fd8\u6709\u989c\u8272\u7a7a\u95f4\u7684\u8f6c\u6362\u3002PIL\u5e93\u540c\u6837\u652f\u6301\u56fe\u50cf\u7684\u5927\u5c0f\u8f6c\u6362\uff0c\u56fe\u50cf\u65cb\u8f6c\uff0c\u4ee5\u53ca\u4efb\u610f\u7684\u4eff\u5c04\u53d8\u6362\u3002<\/li>\n<li>Pillow\u8fd8\u6709\u4e00\u4e9b\u76f4\u65b9\u56fe\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u7528\u4e8e\u5c55\u793a\u56fe\u50cf\u7684\u4e00\u4e9b\u7edf\u8ba1\u7279\u6027\uff0c\u53ef\u4ee5\u7528\u6765\u5b9e\u73b0\u56fe\u50cf\u7684\u81ea\u52a8\u5bf9\u6bd4\u5ea6\u589e\u5f3a\uff0c\u4ee5\u53ca\u5168\u5c40\u7684\u7edf\u8ba1\u5206\u6790\u7b49\u3002<\/li>\n<\/ul>\n<h1>\u00a0<\/h1>\n<h1 style=\"text-align: center;\">PIL\u5e93\u7684\u5b89\u88c5<\/h1>\n<p>PIL\u5e93\u7684\u5b89\u88c5\u975e\u5e38\u7b80\u5355\uff0c\u76f4\u63a5\u4f7f\u7528pip\u5373\u53ef\u3002<\/p>\n\n\n\n<pre>\n<span>pip install Pillow<\/span>\n<\/pre>\n\n\n\n<h1>\u00a0<\/h1>\n<h1 style=\"text-align: center;\">PIL\u5e93\u7684\u4f7f\u7528<\/h1>\n<h3>\u5bfc\u5165<\/h3>\n<p>\u4e3a\u4e86\u517c\u5bb9PIL\u5e93\uff0c\u56e0\u6b64\u5728\u5bfc\u5165\u65f6\u4e0d\u80fd\u5199\u4f5c<code>import Pillow<\/code>\uff0c\u800c\u5e94\u8be5\u662f\u4ee5\u4e0b\u65b9\u5f0f\u3002<\/p>\n\n\n\n<pre>\n<span>import PIL<\/span>\n<\/pre>\n\n\n\n<p>\u66f4\u63a8\u8350\u7684\u662f\u4ee5\u4e0b\u5bfc\u5165\u65b9\u5f0f\u3002<\/p>\n\n\n\n<pre>\n<span>from PIL import Image<\/span>\n<\/pre>\n\n\n\n<p>\u540e\u9762\u7684\u4f7f\u7528\u6848\u4f8b\u90fd\u4f7f\u7528\u8fd9\u79cd\u65b9\u5f0f\u5bfc\u5165Pillow\u5e93\uff0c\u5bfc\u5165\u7684\u90e8\u5206\u5c31\u4e0d\u518d\u91cd\u590d\u4e86\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u8bfb\u53d6\u56fe\u50cf<\/h3>\n<p>\u8bfb\u53d6\u56fe\u50cf\u5f88\u7b80\u5355\uff0c\u8c03\u7528Image\u7684open\u65b9\u6cd5\u5373\u53ef\uff0c\u5f97\u5230\u7684\u662f\u4e00\u4e2aImage\u5bf9\u8c61\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;test.jpg&quot;,&quot;r&quot;)<\/span>\n<\/pre>\n\n\n\n<h3>\u00a0<\/h3>\n<h3>\u9884\u89c8\u56fe\u50cf<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\u7684show\u65b9\u6cd5\uff0c\u5c31\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5730\u9884\u89c8\u56fe\u50cf\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;test.jpg&quot;,&quot;r&quot;)<\/span>\n<span>img.show()<\/span>\n<\/pre>\n\n\n\n<p>show\u65b9\u6cd5\u53ef\u4ee5\u81ea\u52a8\u5c06Image\u5bf9\u8c61\u7684\u5f53\u524d\u56fe\u50cf\u72b6\u6001\u4fdd\u5b58\u5728\u4e34\u65f6\u76ee\u5f55\u4e0b\uff0c\u5e76\u8c03\u7528\u7cfb\u7edf\u9ed8\u8ba4\u7684\u56fe\u7247\u67e5\u770b\u8f6f\u4ef6\u8fdb\u884c\u67e5\u770b\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u56fe\u50cf\u4fdd\u5b58\uff08\u8f6c\u6362\u683c\u5f0f\uff09<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\u7684save\u65b9\u6cd5\uff0c\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5730\u5c06Image\u5bf9\u8c61\u4fdd\u5b58\u6210\u56fe\u7247\u6587\u4ef6\uff0c\u5e76\u4e14\u53ef\u4ee5\u5b9e\u73b0\u7b80\u5355\u7684\u56fe\u50cf\u683c\u5f0f\u8f6c\u6362\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;test.jpg&quot;,&quot;r&quot;)<\/span>\n<span>img.save(&quot;2.png&quot;, &quot;png&quot;)<\/span>\n<\/pre>\n\n\n\n<p>save\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u4fdd\u5b58\u7684\u6587\u4ef6\u8def\u5f84\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u5219\u662f\u6587\u4ef6\u7684\u683c\u5f0f\uff0c\u5982\u679c\u7701\u7565\u7684\u8bdd\u4f1a\u6839\u636e\u6587\u4ef6\u7684\u6269\u5c55\u540d\u8bc6\u522b\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u83b7\u53d6\u56fe\u50cf\u5c5e\u6027<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\uff0c\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5730\u83b7\u53d6\u56fe\u50cf\u7684\u5c5e\u6027\uff0c\u5305\u62ec\u5206\u8fa8\u7387\u3001\u683c\u5f0f\u7b49\u7b49\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span><\/span>\n<span># \u5206\u8fa8\u7387<\/span>\n<span>print(img.width)   # 1280<\/span>\n<span>print(img.height)  # 720<\/span>\n<span><\/span>\n<span># \u56fe\u50cf\u5927\u5c0f<\/span>\n<span>print(img.size)    # (1280, 720)<\/span>\n<span><\/span>\n<span># \u56fe\u50cf\u683c\u5f0f<\/span>\n<span>print(img.format)  # JPEG<\/span>\n<span><\/span>\n<span># \u56fe\u50cf\u6a21\u5f0f<\/span>\n<span>print(img.mode)    # RGB<\/span>\n<span><\/span>\n<span># \u56fe\u50cf\u4fe1\u606f<\/span>\n<span>print(img.info)    #\u4e0d\u540c\u683c\u5f0f\u7684\u56fe\u50cf\u4fe1\u606f\u5185\u5bb9\u4e0d\u540c\uff0c\u4f8b\u5982PNG\u56fe\u50cf\u7684\u4fe1\u606f\u4e2d\u6709Gamma\u503c<\/span>\n<\/pre>\n\n\n\n<p>\u5176\u4e2dmode\u5c5e\u6027\u4ee3\u8868\u56fe\u50cf\u7684\u683c\u5f0f\uff0c\u4f8b\u5982\u50cf\u7d20\u7c7b\u578b\u548c\u56fe\u50cf\u6df1\u5ea6\u7b49\u7b49\uff0c\u4f8b\u5982RGB\u3001RGBA\u3001HSV\u3001CMYK\u3001L\uff08\u7070\u5ea6\u56fe\u50cf\uff09\u7b49\u7b49\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u622a\u53d6\u56fe\u50cf<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\u7684crop\u51fd\u6570\u53ef\u4ee5\u622a\u53d6\u56fe\u50cf\u7684\u90e8\u5206\u533a\u57df<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span><\/span>\n<span># \u622a\u53d6\u56fe\u50cf\u90e8\u5206\u533a\u57df\u5e76\u4fee\u6539\u56fe\u50cf\u5c3a\u5bf8<\/span>\n<span>cropImg = img.crop((100,0,200,100))<\/span>\n<\/pre>\n\n\n\n<p>crop\u51fd\u6570\u7684\u8f93\u5165\u503c\u662f\u4e00\u4e2a\u77e9\u5f62\u533a\u57df\u76844\u4e2a\u5750\u6807\uff0c\u4f9d\u6b21\u4ee3\u8868\u5de6\u4e0a\u89d2x\u5750\u6807\u3001Y\u5750\u6807\u3001\u53f3\u4e0b\u89d2\u7684x\u5750\u6807\u3001y\u5750\u6807\uff0c\u89c4\u5b9a\u56fe\u50cf\u5de6\u4e0a\u89d2\u7684\u5750\u6807\u4e3a\u539f\u70b9(0,0)\uff0c\u5bbd\u5ea6\u7684\u65b9\u5411\u4e3ax\u8f74\uff0c\u9ad8\u5ea6\u7684\u65b9\u5411\u4e3ay\u8f74\uff0c\u6bcf\u4e00\u4e2a\u50cf\u7d20\u4ee3\u8868\u4e00\u4e2a\u5750\u6807\u5355\u4f4d\u3002<\/p>\n<p>\u8fd4\u56de\u503c\u4e5f\u662f\u4e00\u4e2aImage\u5bf9\u8c61\u3002<\/p>\n<p>\u00a0<\/p>\n<h3>\u4fee\u6539\u56fe\u50cf\u5c3a\u5bf8<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\u7684resize\u51fd\u6570\u53ef\u4ee5\u4fee\u6539\u56fe\u50cf\u5c3a\u5bf8\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span><\/span>\n<span># \u4fee\u6539\u56fe\u50cf\u5c3a\u5bf8<\/span>\n<span>resizeImg = img.resize((200, 200))<\/span>\n<span><\/span>\n<span># \u622a\u53d6\u56fe\u50cf\u90e8\u5206\u533a\u57df\u5e76\u4fee\u6539\u56fe\u50cf\u5c3a\u5bf8<\/span>\n<span>resizePartImg = img.resize((200, 200), box = (0,0,100,100))<\/span>\n<\/pre>\n\n\n\n<p>resize\u53c2\u6570\u4fee\u6539\u56fe\u50cf\u5c3a\u5bf8\u65f6\uff0c\u4f1a\u6309\u7167\u8f93\u5165\u7684\u56fe\u50cf\u5bbd\u5ea6\u548c\u9ad8\u5ea6\u5bf9\u56fe\u50cf\u8fdb\u884c\u62c9\u4f38\u3002box\u53c2\u6570\u4e3a\u8981\u4fee\u6539\u5c3a\u5bf8\u7684\u533a\u57df\uff0c\u683c\u5f0f\u548ccrop\u51fd\u6570\u7684\u53c2\u6570\u4e00\u81f4\uff0c\u9ed8\u8ba4\u662f\u6574\u4e2a\u56fe\u50cf\u533a\u57df\uff0c\u5982\u679c\u8bbe\u7f6e\u4e3a\u4e00\u5b9a\u7684\u56fe\u50cf\u5750\u6807\uff0c\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5148\u622a\u53d6\u540e\u62c9\u4f38\uff08crop+resize\uff09\u7684\u6548\u679c\u3002<\/p>\n<p>\u8fd4\u56de\u503c\u4e5f\u662f\u4e00\u4e2aImage\u5bf9\u8c61\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u521b\u5efa\u7f29\u7565\u56fe<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\u7684thumbnail\u51fd\u6570\u53ef\u4ee5\u521b\u5efa\u7f29\u7565\u56fe\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span><\/span>\n<span># \u521b\u5efa\u7f29\u7565\u56fe<\/span>\n<span>img.thumbnail((50,50),resample=Image.BICUBIC)<\/span>\n<span><\/span>\n<span># \u663e\u793a\u56fe\u7247<\/span>\n<span>img.show()<\/span>\n<\/pre>\n\n\n\n<p>thumbnail\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u7f29\u7565\u56fe\u7684\u5c3a\u5bf8\uff0c\u6ce8\u610f\u751f\u6210\u7684\u7f29\u7565\u56fe\u7684\u957f\u5bbd\u6bd4\u548c\u539f\u56fe\u7684\u957f\u5bbd\u6bd4\u662f\u4e00\u81f4\u7684\uff0c\u4e0d\u4f1a\u62c9\u4f38\u56fe\u50cf\uff0c\u5982\u679c\u8f93\u5165\u7684\u7f29\u7565\u56fe\u5c3a\u5bf8\u957f\u5bbd\u6bd4\u548c\u539f\u56fe\u957f\u5bbd\u6bd4\u4e0d\u540c\uff0c\u90a3\u4e48\u751f\u6210\u7684\u7f29\u7565\u56fe\uff0c\u5bbd\u5ea6\u4e3a\u6240\u8bbe\u7f6e\u7684\u7f29\u7565\u56fe\u5bbd\u5ea6\u53c2\u6570\uff0c\u800c\u9ad8\u5ea6\u5219\u81ea\u52a8\u6309\u6bd4\u4f8b\u7f29\u653e\uff0c\u6240\u8bbe\u7f6e\u7684\u7f29\u7565\u56fe\u9ad8\u5ea6\u53c2\u6570\u662f\u65e0\u6548\u7684\u3002<\/p>\n<p>\u7b2c\u4e8c\u4e2a\u53c2\u6570\u5219\u662f\u751f\u6210\u7f29\u7565\u56fe\u7684\u91c7\u6837\u65b9\u5f0f\uff0c\u6709<code>Image.BICUBIC<\/code>\u3001<code>Image.LANCZOS<\/code>\u3001<code>Image.BILINEAR<\/code>\u3001<code>Image.NEAREST<\/code>\u8fd9\u56db\u79cd\u91c7\u6837\u65b9\u6cd5\uff0c\u9ed8\u8ba4\u662f<code>Image.BICUBIC<\/code>\u65b9\u5f0f\u3002<\/p>\n<p>\u4e0d\u8fc7\u7b49\u5230\u660e\u5e74\uff0cPillow10.X\u7248\u672c\u5f00\u59cb\uff0c\u91c7\u6837\u65b9\u5f0f\u4f1a\u4ece<code>Image<\/code>\u6a21\u5757\u8c03\u6574\u5230<code>Resampling<\/code>\u6a21\u5757\u4e2d\uff0c\u5230\u65f6\u5019\u53ef\u4ee5\u901a\u8fc7<code>PIL.Resampling.BICUBIC<\/code>\u65b9\u5f0f\u4f7f\u7528\u3002<\/p>\n<p>\u53e6\u5916\u9700\u8981\u6ce8\u610fthumbnail\u51fd\u6570\u662f\u6ca1\u6709\u8fd4\u56de\u503c\u7684\uff0c\u662f\u76f4\u63a5\u5728Image\u5bf9\u8c61\u4e0a\u64cd\u4f5c\uff0c\u4e5f\u5c31\u662f\u8bf4\u751f\u6210\u7684\u7f29\u7565\u56fe\u4f1a\u8986\u76d6\u539f\u6765\u7684\u56fe\u50cf\u4fe1\u606f\uff0c\u6548\u679c\u548cresize\u51fd\u6570\u662f\u7c7b\u4f3c\u7684\u3002<\/p>\n\n\n\n<h3>\u00a0<\/h3>\n<h3>\u56fe\u50cf\u65cb\u8f6c\u3001\u7ffb\u8f6c<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\u7684rotate\u51fd\u6570\u53ef\u4ee5\u5b9e\u73b0\u56fe\u50cf\u5185\u5bb9\u7684\u65cb\u8f6c<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>rotateImg = img.rotate(90)<\/span>\n<\/pre>\n\n\n\n<p>rotate\u51fd\u6570\u7684\u53c2\u6570\u4e3a<code>\u9006\u65f6\u9488<\/code>\u65cb\u8f6c\u7684\u89d2\u5ea6\uff0c\u8981\u6ce8\u610f\u7684\u662f\uff0crotate\u51fd\u6570\u65cb\u8f6c\u7684\u53ea\u662f\u56fe\u50cf\u7684\u5185\u5bb9\uff0c\u56fe\u50cf\u7684\u5c3a\u5bf8\u4e0d\u4f1a\u53d8\u5316\uff0c\u56e0\u6b64\u5927\u6982\u7387\u4f1a\u51fa\u73b0\u56fe\u7247\u5185\u5bb9\u8d85\u51fa\u56fe\u50cf\u8fb9\u7f18\u6216\u8005\u56fe\u50cf\u90e8\u5206\u533a\u57df\u5185\u6ca1\u6709\u56fe\u50cf\u5185\u5bb9\u7684\u60c5\u51b5\uff0c\u4f8b\u5982\u4e00\u4e2apng\u683c\u5f0f\u7684\u56fe\u50cf\u65cb\u8f6c90\u5ea6\u7684\u7ed3\u679c\u662f\u8fd9\u6837\u7684\u3002<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-5250 aligncenter\" src=\"https:\/\/www.yumefx.com\/wp-content\/uploads\/2022\/06\/PythonPillow_01.jpg\" alt=\"\" width=\"1917\" height=\"628\" \/><\/p>\n<p>\u53f3\u56fe\u4e3a\u65cb\u8f6c\u540e\u7684\u7ed3\u679c\uff0c\u663e\u7136\u8d85\u51fa\u56fe\u50cf\u533a\u57df\u5916\u7684\u5185\u5bb9\u4f1a\u4e22\u5931\uff0c\u800c\u6ca1\u6709\u5185\u5bb9\u7684\u56fe\u50cf\u533a\u57df\u4f1a\u53d8\u6210\u900f\u660e\uff08\u56e0\u4e3a\u533a\u57df\u5185RGBA4\u4e2a\u901a\u9053\u90fd\u4e3a0\uff09\u3002<\/p>\n<p>\u5982\u679c\u8981\u5b9e\u73b0\u56fe\u50cf\u5185\u5bb9\u548c\u56fe\u50cf\u5c3a\u5bf8\u7684\u540c\u65f6\u65cb\u8f6c\uff0c\u53ef\u4ee5\u4f7f\u7528transpose\u51fd\u6570\u5b9e\u73b0\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>rotateImg = img.transpose(Image.ROTATE_90)<\/span>\n<\/pre>\n\n\n\n<p>\u5f97\u5230\u7684\u6548\u679c\u662f\u8fd9\u6837\u7684<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-5253 aligncenter\" src=\"https:\/\/www.yumefx.com\/wp-content\/uploads\/2022\/06\/PythonPillow_02.jpg\" alt=\"\" width=\"1655\" height=\"1023\" \/><\/p>\n<p>\u663e\u7136\u8fd9\u6837\u7684\u6548\u679c\u662f\u6bd4\u8f83\u76f4\u89c2\u7684\uff0c\u4f46\u662ftranspose\u51fd\u6570\u7684\u8f93\u5165\u503c\u4e0d\u662f\u65cb\u8f6c\u89d2\u5ea6\u503c\uff0c\u800c\u662f\u7279\u5b9a\u7684\u9884\u8bbe\uff0c\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u79cd\u3002<\/p>\n<ul>\n<li>Image.FLIP_LEFT_RIGHT\uff0c\u8868\u793a\u5c06\u56fe\u50cf\u5de6\u53f3\u6c34\u5e73\u7ffb\u8f6c<\/li>\n<li>Image.FLIP_TOP_BOTTOM\uff0c\u8868\u793a\u5c06\u56fe\u50cf\u4e0a\u4e0b\u5782\u76f4\u7ffb\u8f6c<\/li>\n<li>Image.ROTATE_90\uff0c\u8868\u793a\u5c06\u56fe\u50cf\u9006\u65f6\u9488\u65cb\u8f6c90\u00b0<\/li>\n<li>Image.ROTATE_180\uff0c\u8868\u793a\u5c06\u56fe\u50cf\u9006\u65f6\u9488\u65cb\u8f6c180\u00b0<\/li>\n<li>Image.ROTATE_270\uff0c\u8868\u793a\u5c06\u56fe\u50cf\u9006\u65f6\u9488\u65cb\u8f6c270\u00b0<\/li>\n<li>Image.TRANSPOSE\uff0c\u8868\u793a\u5c06\u56fe\u50cf\u8fdb\u884c\u8f6c\u7f6e(\u76f8\u5f53\u4e8e\u987a\u65f6\u9488\u65cb\u8f6c90\u00b0)<\/li>\n<li>Image.TRANSVERSE\uff0c\u8868\u793a\u5c06\u56fe\u50cf\u8fdb\u884c\u8f6c\u7f6e,\u518d\u6c34\u5e73\u7ffb\u8f6c<\/li>\n<\/ul>\n<p>\u663e\u7136transpose\u66f4\u9002\u5408\u7528\u4e8e\u6574\u4e2a\u56fe\u50cf\u8fdb\u884c\u6c34\u5e73\u5782\u76f4\u89d2\u5ea6\u7684\u7b80\u5355\u65cb\u8f6c\u548c\u7ffb\u8f6c\uff0c\u800crotate\u66f4\u9002\u5408\u7528\u4e8e\u590d\u6742\u56fe\u50cf\u5904\u7406\u65f6\uff0c\u5c06\u90e8\u5206\u56fe\u50cf\u5185\u5bb9\u8fdb\u884c\u4efb\u610f\u89d2\u5ea6\u7684\u65cb\u8f6c\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u56fe\u50cf\u590d\u5236\u7c98\u8d34<\/h3>\n<p>Image\u5bf9\u8c61\u7684copy\u51fd\u6570\u53ef\u4ee5\u590d\u5236Image\u5bf9\u8c61\uff0cpaste\u51fd\u6570\u5219\u53ef\u4ee5\u7528\u4e8e\u5c06\u4e00\u4e2aImage\u5bf9\u8c61\u7c98\u8d34\u5230\u53e6\u4e00\u4e2aImage\u5bf9\u8c61\u4e0a\uff0c\u7528\u4e8e\u56fe\u50cf\u62fc\u8d34\u3001\u8986\u76d6\u7b49\u3002<\/p>\n\n\n\n<pre>\n<span>img1 = Image.open(&quot;1.png&quot;, &quot;r&quot;)<\/span>\n<span>img2 = Image.open(&quot;2.png&quot;, &quot;r&quot;)<\/span>\n<span>img2.paste(img1,(100,100),None)<\/span>\n<\/pre>\n\n\n\n<p>\u9996\u5148\u9700\u8981\u6ce8\u610fpaste\u51fd\u6570\u6ca1\u6709\u8fd4\u56de\u503c\uff0c\u4f1a\u76f4\u63a5\u4fee\u6539\u5f53\u524d\u7684Image\u5bf9\u8c61\u3002<\/p>\n<p>\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u8981\u7c98\u8d34\u7684Image\u5bf9\u8c61\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u76ee\u6807\u5750\u6807\u4f4d\u7f6e\uff0c\u5982\u679c\u5750\u6807\u4e3a2\u4e2a\u5143\u7d20\u7684\u5143\u7ec4\uff0c\u90a3\u4e48\u5c31\u4ee3\u8868\u4e00\u4e2a\u5b9a\u4f4d\u70b9\u7684x\u3001y\u5750\u6807\uff0c\u8981\u7c98\u8d34\u7684Image\u5bf9\u8c61\u5de6\u4e0a\u89d2\u8981\u5bf9\u9f50\u8fd9\u4e2a\u5b9a\u4f4d\u70b9\uff1b\u5982\u679c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u5750\u6807\u4e3a4\u4e2a\u5143\u7d20\u7684\u5143\u7ec4\uff0c\u90a3\u4e48\u5c31\u4ee3\u8868\u5de6\u4e0a\u548c\u53f3\u4e0b\u4e24\u4e2a\u5b9a\u4f4d\u70b9\u7684x\u3001y\u5750\u6807\uff0c\u8981\u7c98\u8d34\u7684Image\u5bf9\u8c61\u5982\u679c\u5c3a\u5bf8\u4e0d\u7b26\u5408\u4e24\u4e2a\u5b9a\u4f4d\u70b9\u6784\u6210\u7684\u5c3a\u5bf8\uff0c\u90a3\u4e48\u4f1a\u81ea\u52a8\u62c9\u4f38\u4ee5\u6ee1\u8db3\u8fd9\u4e2a\u5c3a\u5bf8\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u56fe\u50cf\u900f\u660e\u53e0\u52a0<\/h3>\n<p>\u53ef\u4ee5\u901a\u8fc7Image\u5bf9\u8c61\u7684alpha_composite\u51fd\u6570\u5b9e\u73b0\u7b80\u5355\u7684\u56fe\u50cf\u900f\u660e\u53e0\u52a0<\/p>\n\n\n\n<pre>\n<span>img1 = Image.open(&quot;1.png&quot;, &quot;r&quot;)<\/span>\n<span>img2 = Image.open(&quot;2.png&quot;, &quot;r&quot;)<\/span>\n<span>img3 = Image.alpha_composite(img1, img2)<\/span>\n<\/pre>\n\n\n\n<p>\u8fd9\u79cd\u53e0\u52a0\u65b9\u5f0f\u6709\u70b9\u7c7b\u4f3c\u4e8epaste\u56fe\u50cf\u7c98\u8d34\uff0c\u4f46\u4f7f\u7528\u6bd4\u8f83\u82db\u523b\uff0c\u8981\u6c42\u4e24\u4e2aImage\u5bf9\u8c61\u90fd\u4e3aRGBA\u6a21\u5f0f\u5e76\u4e14\u5206\u8fa8\u7387\u4e00\u81f4\u3002<\/p>\n<p>\u53e6\u4e00\u79cd\u65b9\u5f0f\u662f\u901a\u8fc7blend\u51fd\u6570\u5b9e\u73b0\u56fe\u7247\u7684\u900f\u660e\u6df7\u5408\u6548\u679c\u3002<\/p>\n\n\n\n<pre>\n<span>img1 = Image.open(&quot;1.png&quot;, &quot;r&quot;)<\/span>\n<span>img2 = Image.open(&quot;2.png&quot;, &quot;r&quot;)<\/span>\n<span>img3 = Image.blend(img1, img2, 0.3)<\/span>\n<\/pre>\n\n\n\n<p>\u6700\u540e\u4e00\u4e2a\u53c2\u6570\u662falpha\u503c\uff0c\u6700\u540e\u5f97\u5230\u7684\u7ed3\u679c\u662f<code>img1 * (1 - alpha) + img2 * (alpha)<\/code>\uff0c\u8fd9\u79cd\u65b9\u5f0f\u8981\u6c42\u4e24\u4e2aImage\u5bf9\u8c61\u6a21\u5f0f\u4e00\u81f4\u5e76\u4e14\u5206\u8fa8\u7387\u4e00\u81f4\u3002<\/p>\n<p>\u8fd8\u6709\u4e00\u4e2a<code>composite<\/code>\u51fd\u6570\uff0c\u5219\u662f\u901a\u8fc7mask\u53c2\u6570\uff0c\u4e5f\u5c31\u662f\u906e\u7f69\u56fe\u7247\u6765\u63a7\u5236\u900f\u660e\u6df7\u5408\u533a\u57df\u3002<\/p>\n\n\n\n<h3>\u00a0<\/h3>\n<h3>\u5206\u79bb\u901a\u9053<\/h3>\n<p>Image\u5bf9\u8c61\u7684split\u51fd\u6570\u53ef\u4ee5\u5c06\u56fe\u50cf\u7684\u989c\u8272\u901a\u9053\u5206\u79bb\uff0c\u6bd4\u5982\u5bf9\u4e8eRGB\u56fe\u50cf\uff0c\u53ef\u4ee5\u5c06\u5176R,G,B\u4e09\u4e2a\u989c\u8272\u901a\u9053\u5206\u79bb\u3002<\/p>\n<p>\u800cmerge\u51fd\u6570\u5219\u53ef\u4ee5\u5c06\u989c\u8272\u901a\u9053\u8fdb\u884c\u5408\u5e76\uff0c\u7ec4\u6210\u4e00\u4e2a\u591a\u901a\u9053\u7684\u56fe\u50cf\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>r, g, b = img.split()<\/span>\n<span><\/span>\n<span>mergeImg = Image.merge(&quot;RGB&quot;, [g, b, r])<\/span>\n<\/pre>\n\n\n\n<p>merge\u51fd\u6570\u7684\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u5408\u5e76\u5f97\u5230\u7684\u56fe\u50cf\u7684\u989c\u8272\u6a21\u5f0f\uff0c\u548c\u524d\u9762\u56fe\u50cf\u4fe1\u606f\u7684mode\u5c5e\u6027\u4e00\u81f4\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u5219\u662f\u7528\u6765\u5408\u5e76\u7684\u5404\u4e2a\u901a\u9053\uff0c\u987a\u5e8f\u4e0e\u989c\u8272\u6a21\u5f0f\u76f8\u540c\uff0c\u56e0\u6b64\u4e0a\u9762\u7684\u4f8b\u5b50\u5c31\u662f\u5c06\u4e09\u4e2a\u989c\u8272\u901a\u9053\u4e92\u6362\uff0c\u7ed3\u679c\u5982\u4e0b<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-5258 aligncenter\" src=\"https:\/\/www.yumefx.com\/wp-content\/uploads\/2022\/06\/PythonPillow_03.jpg\" alt=\"\" width=\"1714\" height=\"634\" \/><\/p>\n<p>\u9664\u4e86split\u51fd\u6570\u4ee5\u5916\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7<code>getchannel<\/code>\u51fd\u6570\u5355\u72ec\u83b7\u53d6\u56fe\u50cf\u4e2d\u7684\u67d0\u4e00\u4e2a\u901a\u9053\u3002<\/p>\n<p>\u64cd\u4f5c\u56fe\u50cf\u901a\u9053\u7684\u529f\u80fd\u5728\u6e38\u620f\u9886\u57df\u5f88\u6709\u7528\uff0c\u53ef\u4ee5\u7528\u6765\u5c063\u6216\u80054\u4e2a\u7070\u5ea6\u8d34\u56fe\u5408\u5e76\u6210\u4e00\u4e2a\u989c\u8272\u8d34\u56fe\uff0c\u4ece\u800c\u964d\u4f4e\u8d34\u56fe\u6570\u91cf\uff0c\u538b\u7f29\u5b58\u50a8\u7a7a\u95f4\u5e76\u63d0\u9ad8\u91c7\u6837\u6548\u7387\u3002<\/p>\n<h3>\u00a0<\/h3>\n<h3>\u6539\u53d8\u56fe\u50cf\u6a21\u5f0f<\/h3>\n<p>\u901a\u8fc7Image\u5bf9\u8c61\u7684convert\u51fd\u6570\u53ef\u4ee5\u6539\u53d8\u56fe\u50cf\u7684\u6a21\u5f0f\uff08mode\uff09\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>lImg = img.convert(&quot;L&quot;)<\/span>\n<\/pre>\n\n\n\n<p>\u4f8b\u5982\u8fd9\u4e2a\u4f8b\u5b50\u662f\u5c06\u6d4b\u8bd5\u56fe\u7247\u8f6c\u6362\u6210\u7070\u5ea6\u56fe\uff0c\u6548\u679c\u5982\u4e0b<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-5259 aligncenter\" src=\"https:\/\/www.yumefx.com\/wp-content\/uploads\/2022\/06\/PythonPillow_04.jpg\" alt=\"\" width=\"1722\" height=\"625\" \/><\/p>\n<h3>\u00a0<\/h3>\n<h3>\u50cf\u7d20\u64cd\u4f5c<\/h3>\n<p>Image\u5bf9\u8c61\u7684load\u51fd\u6570\u53ef\u4ee5\u83b7\u53d6\u56fe\u50cf\u7684\u5355\u4e2a\u50cf\u7d20\u7684\u6570\u503c\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>pixels = img.load()<\/span>\n<span>print(pixels[10,10])  # (234, 118, 225)<\/span>\n<span>pixels[10,10] = (0, 0, 0)<\/span>\n<\/pre>\n\n\n\n<p>\u50cf\u4e0a\u9762\u7684\u4f8b\u5b50\u4e00\u6837\uff0c\u65e2\u53ef\u4ee5\u83b7\u53d6\u50cf\u7d20\u7684\u503c\uff0c\u4e5f\u53ef\u4ee5\u4fee\u6539\u50cf\u7d20\u7684\u503c\u3002\u9664\u4e86load\u51fd\u6570\u4ee5\u5916\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7Image\u5bf9\u8c61\u7684<code>getpixel<\/code>\u51fd\u6570\u83b7\u53d6\u6bcf\u4e2a\u50cf\u7d20\u7684\u503c\u3002<\/p>\n<p>Image\u5bf9\u8c61\u7684point\u51fd\u6570\u53ef\u4ee5\u5bf9\u56fe\u50cf\u7684\u6bcf\u4e2a\u50cf\u7d20\u8fdb\u884c\u64cd\u4f5c\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>pixelImg = img.point(lambda x: x * 1.5)<\/span>\n<\/pre>\n\n\n\n<p>\u4e0a\u9762\u7684\u4ee3\u7801\u5bf9point\u65b9\u6cd5\u4f20\u5165\u4e86\u4e00\u4e2a\u533f\u540d\u51fd\u6570\uff0c\u5c06\u56fe\u50cf\u7684\u6bcf\u4e2a\u50cf\u7d20\u70b9\u6570\u503c\u90fd\u4e58\u4ee51.5\uff0c\u6548\u679c\u5982\u4e0b<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-5266 aligncenter\" src=\"https:\/\/www.yumefx.com\/wp-content\/uploads\/2022\/06\/PythonPillow_07.jpg\" alt=\"\" width=\"1861\" height=\"584\" \/><\/p>\n<h3>\u00a0<\/h3>\n<h3>\u56fe\u50cf\u6ee4\u955c<\/h3>\n<p>Image\u5bf9\u8c61\u7684filter\u51fd\u6570\u53ef\u4ee5\u7ed9\u56fe\u50cf\u8bbe\u7f6e\u6ee4\u955c\uff0c\u5b9e\u73b0\u6a21\u7cca\u3001\u9510\u5316\u3001\u67e5\u627e\u8fb9\u7f18\u7b49\u7b49\u6548\u679c\u3002<\/p>\n\n\n\n<pre>\n<span>from PIL import ImageFilter<\/span>\n<span><\/span>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>fImg = img.filter(ImageFilter.GaussianBlur(radius=2))<\/span>\n<\/pre>\n\n\n\n<p>\u4e0a\u9762\u7684\u4f8b\u5b50\u662f\u9ad8\u65af\u6a21\u7cca\u6ee4\u955c\uff0c\u6548\u679c\u5982\u4e0b<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-5263 aligncenter\" src=\"https:\/\/www.yumefx.com\/wp-content\/uploads\/2022\/06\/PythonPillow_06.jpg\" alt=\"\" width=\"1867\" height=\"588\" \/><\/p>\n<p>\u5e38\u7528\u7684filter\u6709\u4ee5\u4e0b\u51e0\u7c7b<\/p>\n<ul>\n<li>ImageFilter.BLUR\uff0c\u7b80\u5355\u6a21\u7cca<\/li>\n<li>ImageFilter.SHARPEN\uff0c\u7b80\u5355\u9510\u5316<\/li>\n<li><span class=\"sig-prename descclassname\"><span class=\"pre\">ImageFilter.<\/span><\/span><span class=\"sig-name descname\"><span class=\"pre\">BoxBlur<\/span><\/span><span class=\"sig-paren\">(<\/span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">radius<\/span><\/span><\/em><span class=\"sig-paren\">)\uff0c\u76d2\u72b6\u6a21\u7cca<\/span><\/li>\n<li><span class=\"sig-prename descclassname\"><span class=\"pre\">ImageFilter.<\/span><\/span><span class=\"sig-name descname\"><span class=\"pre\">GaussianBlur<\/span><\/span><span class=\"sig-paren\">(<\/span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">radius<\/span><\/span><span class=\"o\"><span class=\"pre\">=<\/span><\/span><span class=\"default_value\"><span class=\"pre\">2<\/span><\/span><\/em><span class=\"sig-paren\">)\uff0c\u9ad8\u65af\u6a21\u7cca<\/span><\/li>\n<li><span class=\"sig-prename descclassname\"><span class=\"pre\">ImageFilter.FIND_EDGES\uff0c\u67e5\u627e\u56fe\u50cf\u8fc7\u6e21\u8fb9\u7f18<\/span><\/span><\/li>\n<li><span class=\"sig-prename descclassname\"><span class=\"pre\">ImageFilter.<\/span><\/span>CONTOUR\uff0c\u83b7\u53d6\u56fe\u50cf\u8f6e\u5ed3<\/li>\n<li><span class=\"sig-prename descclassname\"><span class=\"pre\">ImageFilter.<\/span><\/span>EMBOSS\uff0c\u56fe\u50cf\u6d6e\u96d5\u6548\u679c<\/li>\n<li><span class=\"sig-prename descclassname\"><span class=\"pre\">ImageFilter.MaxFilter\uff0cImageFilter.MinFilter\uff0cImageFilter.MedianFilter\uff0cImageFilter.RankFilter\uff0cImageFilter.ModeFilter..<\/span><\/span><\/li>\n<\/ul>\n<h3>\u00a0<\/h3>\n<h3>\u56fe\u50cf\u8c03\u6574<\/h3>\n<p>PIL\u7684ImageEnhance\u6a21\u5757\u53ef\u4ee5\u5bf9\u56fe\u50cf\u8fdb\u884c\u589e\u5f3a\u5904\u7406\uff0c\u4f8b\u5982\u6539\u53d8\u4eae\u5ea6\u3001\u5bf9\u6bd4\u5ea6\u7b49\u7b49<\/p>\n\n\n\n<pre>\n<span>from PIL import ImageEnhance<\/span>\n<span><\/span>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span><\/span>\n<span>brightness = ImageEnhance.Brightness(img)<\/span>\n<span>brightImg = brightness.enhance(1.5)<\/span>\n<span><\/span>\n<span>contrast = ImageEnhance.Contrast(brightImg)<\/span>\n<span>contrastImg = contrast.enhance(0.8)<\/span>\n<\/pre>\n\n\n\n<p>\u4e0a\u9762\u7684\u4f8b\u5b50\u5c31\u662f\u5c06\u56fe\u7247\u4eae\u5ea6\u589e\u52a050%\uff0c\u5bf9\u6bd4\u5ea6\u964d\u4f4e20%\uff0c\u6548\u679c\u5982\u4e0b\u3002<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-5262\" src=\"https:\/\/www.yumefx.com\/wp-content\/uploads\/2022\/06\/PythonPillow_05.jpg\" alt=\"\" width=\"2029\" height=\"651\" \/><\/p>\n<p>\u589e\u5f3a\u65b9\u5f0f\u6709\u4ee5\u4e0b\u51e0\u79cd\uff1a<\/p>\n<ul>\n<li>ImageEnhance.Color\uff0c\u9971\u548c\u5ea6<\/li>\n<li>ImageEnhance.Contrast\uff0c\u5bf9\u6bd4\u5ea6<\/li>\n<li>ImageEnhance.Brightness\uff0c\u4eae\u5ea6<\/li>\n<li>ImageEnhance.Sharpness\uff0c\u9510\u5316\u5ea6<\/li>\n<\/ul>\n<h3>\u00a0<\/h3>\n<h3>gif\u52a8\u56fe\u5904\u7406<\/h3>\n<p>PIL\u9664\u4e86\u5904\u7406\u9759\u6001\u56fe\u50cf\u4ee5\u5916\uff0cPIL\u7684ImageSequence\u6a21\u5757\u53ef\u4ee5\u5904\u7406gif\u683c\u5f0f\u7684\u52a8\u56fe\uff0c\u4f8b\u5982\u901a\u8fc7\u4e0b\u9762\u7684\u4ee3\u7801\u53ef\u4ee5\u5c06\u52a8\u56fe\u7684\u6bcf\u4e00\u5e27\u5355\u72ec\u4fdd\u5b58\u6210\u4e00\u5f20\u9759\u6001\u56fe\u7247\u3002<\/p>\n\n\n\n<pre>\n<span>from PIL import ImageSequence<\/span>\n<span><\/span>\n<span>gif = Image.open(&quot;<span>.gif&quot;)<\/span>\n<span>i = <span><\/span>\n<span>for frame in ImageSequence.Iterator(gif):<\/span>\n<span>    if frame.mode == &#x27;JPEG&#x27;:<\/span>\n<span>        frame.save(&quot;{}.jpg&quot;.format(i))<\/span>\n<span>    else:<\/span>\n<span>        frame.save(&quot;{}.png&quot;.format(i))<\/span>\n<span>    i += <span><\/span>\n<\/pre>\n\n\n\n<h3>\u00a0<\/h3>\n<h3>Image\u8f6c\u6362<\/h3>\n<p>\u5728\u4f7f\u7528PyQt\u505a\u56fe\u5f62\u754c\u9762\u7a0b\u5e8f\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528PIL\u7684Image\u6a21\u5757\u8bfb\u53d6\u56fe\u7247\uff0c\u751f\u6210Image\u5bf9\u8c61\uff0c\u518d\u5c06Image\u5bf9\u8c61\u8f6c\u5316\u6210QImage\u5bf9\u8c61\u6216\u8005QPixmap\u5bf9\u8c61\u4f7f\u7528\uff0c\u4f7f\u7528\u4e5f\u5f88\u7b80\u5355\u3002<\/p>\n\n\n\n<pre>\n<span>img = Image.open(&quot;1.jpg&quot;, &quot;r&quot;)<\/span>\n<span>qimage = img.toqimage()<\/span>\n<span>qpixmap = img.toqpixmap<\/span>\n<\/pre>\n\n\n\n<p>\u53cd\u8fc7\u6765\uff0c\u5c06PyQt\u7684QImage\u5bf9\u8c61\u6216\u8005QPixmap\u5bf9\u8c61\u8f6c\u6210PIL\u7684Image\u5bf9\u8c61\u4e5f\u5f88\u7b80\u5355\uff0c\u901a\u8fc7PIL\u7684<code>ImageQt<\/code>\u6a21\u5757\u5373\u53ef\u5b9e\u73b0\u3002<\/p>\n\n\n\n<pre>\n<span>from PIL import ImageQt<\/span>\n<span><\/span>\n<span>img = ImageQt.fromqimage(qimage)<\/span>\n<span>img = ImageQt.fromqpixmap(pixmap)<\/span>\n<\/pre>\n\n\n\n<p>Image\u5bf9\u8c61\u5176\u4ed6\u5e38\u7528\u7684\u51fd\u6570\uff1a<\/p>\n<ul>\n<li>transform\uff0c\u5e73\u79fb\u56fe\u50cf<\/li>\n<li>verify\uff0c\u9a8c\u8bc1\u56fe\u50cf\u6587\u4ef6\u662f\u5426\u635f\u574f<\/li>\n<li>histogram\uff0c\u83b7\u53d6\u56fe\u50cf\u7684\u76f4\u65b9\u56fe\u6570\u636e<\/li>\n<li>entropy\uff0c\u8ba1\u7b97\u56fe\u50cf\u7684\u71b5<\/li>\n<li>getbands\uff0c\u83b7\u53d6\u56fe\u50cf\u6bcf\u4e2a\u901a\u9053\u7684\u540d\u79f0<\/li>\n<li>getextrema\uff0c\u83b7\u53d6\u56fe\u50cf\u6bcf\u4e2a\u901a\u9053\u7684\u6700\u5927\u503c\u4e0e\u6700\u5c0f\u503c<\/li>\n<li>getbbox\uff0c\u83b7\u53d6\u56fe\u50cf\u975e\u96f6\u533a\u57df\u7684\u8fb9\u754c\u6846<\/li>\n<li>tobytes\uff0c\u5c06\u56fe\u50cf\u8f6c\u6210\u5b57\u8282\u5f62\u5f0f<\/li>\n<li>frombytes\uff0c\u5c06\u5b57\u8282\u8f6c\u6210\u56fe\u50cf\u5f62<\/li>\n<li>effect_spread\uff0c\u50cf\u7d20\u968f\u673a\u6563\u5e03\u6548\u679c<\/li>\n<\/ul>\n<p>PIL\u5176\u4ed6\u5e38\u7528\u7684\u6a21\u5757\u8fd8\u6709\uff1a<\/p>\n<ul>\n<li>ImageChops\uff0c\u7528\u4e8e\u5bf9\u56fe\u50cf\u8fdb\u884c\u6df7\u5408\u53e0\u52a0<\/li>\n<li>ImageCms\uff0c\u5904\u7406\u989c\u8272\u914d\u7f6e<\/li>\n<li>ImageDraw\uff0c\u7ed8\u5236\u56fe\u50cf<\/li>\n<li>ImageGrab\uff0c\u83b7\u53d6\u5c4f\u5e55\u6216\u8005\u526a\u8d34\u677f\u7684\u56fe\u50cf<\/li>\n<\/ul>\n<p>\u5177\u4f53\u53ef\u4ee5\u67e5\u770b<a href=\"https:\/\/pillow.readthedocs.io\/en\/stable\/index.html\">\u5b98\u7f51\u6587\u6863<\/a>\uff0c\u8fd9\u91cc\u5c31\u4e0d\u8d58\u8ff0\u4e86\u3002<\/p>\n<p>\u00a0<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u6211\u5bb3\u6015\u6211\u7684\u5224\u65ad\u8574\u542b\u7740\u67d0\u79cd\u504f\u89c1\uff0c<br \/>\u800c\u8fd9\u79cd\u504f\u89c1\u603b\u662f\u4ee5\u771f\u7406\u7684\u9762\u76ee\u51fa\u73b0\u3002<\/p>\n<p style=\"text-align: right;\">\u300a\u4e2d\u56fd\u5728\u6881\u5e84\u300b<br \/>\u2014\u2014\u6881\u9e3f<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u8a00 \u62d6\u66f4\u4e00\u65f6\u723d\uff0c\u4e00\u76f4\u62d6\u66f4\u4e00\u76f4\u723d\u3002 \u4e0d\u8fc7\u7ee7\u7eed\u62d6\u4e0b\u53bb\uff0c\u4e0b\u534a\u5e74\u5c31\u6709\u7684\u75db\u82e6\u4e86\uff0c\u76ee\u524d\u5df2\u7ecf\u6b20\u4e86\u4e94\u7bc7\uff0c\u4e00\u4e2a\u591a\u6708\u7684\u5de5\u4f5c\u91cf\uff0c\u60f3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5266,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[12,4],"tags":[37,14],"_links":{"self":[{"href":"https:\/\/www.yumefx.com\/index.php?rest_route=\/wp\/v2\/posts\/5237"}],"collection":[{"href":"https:\/\/www.yumefx.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yumefx.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yumefx.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yumefx.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5237"}],"version-history":[{"count":0,"href":"https:\/\/www.yumefx.com\/index.php?rest_route=\/wp\/v2\/posts\/5237\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yumefx.com\/index.php?rest_route=\/wp\/v2\/media\/5266"}],"wp:attachment":[{"href":"https:\/\/www.yumefx.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yumefx.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yumefx.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}