日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

520这天,我突然意识到,她根本配不上我这么聪明的男人!

發布時間:2024/9/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 520这天,我突然意识到,她根本配不上我这么聪明的男人! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


網絡情人節


對于網絡情人節(520),程序員是怎么看待它的呢?


不知道大家是否會期待這天的到來,但對于我這個程序猿來說:


  • 從主觀來講,不放假的節日,都不算節日

  • 從客觀來講,由消費帶動的節日,都不是純粹的節日


找這么多理由,其實歸根結底,主要是以為“窮”,窮人過什么節日啊!


IT男的思維


今天隨手翻UC,看到一個關于程序猿520表白的段子。


雖然是17年的老梗,但當時帖子比較火名為“她根本配不上我這么聰明的男人!”


?[段子鏈接]

http://www.sohu.com/a/168270871_99956288


段子是一張很長長長長圖,讓人看得難受


在這個重大節日---520情人節來臨之際,我卻是顯得更加寂寞無聊。看著那張長圖有點不爽(關鍵是朋友圈狗糧吃得有點多),于是.........就有了下面這張動態圖(用Python將其做成一張動態圖,這就是聰明的男人一貫的做法,哈哈哈哈)



接下來讓我們一起來看看聰明的男人,是如何將那張不爽的常常圖做成一張動態圖的?


圖片的拆分與合并


Python的PIL模塊在對圖片處理上簡直方便的不行...


先來說說圖片的拆分吧


先來看看長圖,內容是一共16張對白拼成的段子,其實我們只要把這16張圖按照等高的方式進行裁剪就OK了,so easy!


代碼主要用到了Image.crop(cropBox)的裁剪方式。


至于crop的拆分,點進去函數就能看到相關注釋:

Returns a rectangular region from this image. The box is a
4-tuple defining the left, upper, right, and lower pixel
coordinate. See :ref:coordinate-system.

import?osfrom?PIL?import?Imagedef?split_image(file,?split_times):????path,?filename?=?os.path.split(file)????os.chdir(path)????try:????????os.mkdir('pictures')????except?FileExistsError:????????pass????img?=?Image.open(filename)????width,?height?=?img.size????per_height?=?height?/?split_times????for?pictureNumber?in?range(split_times):????????_cropBox?=?(0,?per_height?*?pictureNumber,?width?*?0.8,?per_height?*?(pictureNumber?+?1))????????picture?=?img.crop(_cropBox)????????picture_name?=?os.path.join(path,?'pictures',?"%d.png"?%?pictureNumber)????????picture.save(picture_name)split_image("C:\\Users\Administrator\Downloads\\520.jpg",?16)
from?PIL?import?Image

def?split_image(file,?split_times):
????path,?filename?=?os.path.split(file)
????os.chdir(path)
????try:
????????os.mkdir('pictures')
????except?FileExistsError:
????????pass
????img?=?Image.open(filename)
????width,?height?=?img.size
????per_height?=?height?/?split_times
????for?pictureNumber?in?range(split_times):
????????_cropBox?=?(0,?per_height?*?pictureNumber,?width?*?0.8,?per_height?*?(pictureNumber?+?1))
????????picture?=?img.crop(_cropBox)
????????picture_name?=?os.path.join(path,?'pictures',?"%d.png"?%?pictureNumber)
????????picture.save(picture_name)

split_image("C:\\Users\Administrator\Downloads\\520.jpg",?16)


代碼片段如上,簡單的處理下邊緣與長度即可。至于width的0.8,主要是因為圖片中萬惡的馬賽克和“騰訊視頻”的字樣,影響我看段子的心情...


結果如下圖:


圖片分隔效果.png


再來看看圖片合并


將16張剪切好的圖片,組合成一個gif的動畫,看起來會比單純的圖片看著高端多了,不是嗎?


之前說到了PIL模塊的強大,我們只需要使用Image的duration關鍵字,就能達到我們的目的。


上代碼看看吧:

import?argparsefrom?PIL?import?Imageimport?osclass?SplitLongPicture:????def?__init__(self):????????self.dirName?=?os.path.split(os.path.abspath(__file__))[0]????????self.ImagePath?=?args.ImagePath????????self.SplitTimes?=?args.SplitTimes????????self.SwitchingTime?=?args.SwitchingTime????????self.Path,?self.File?=?os.path.split(self.ImagePath)????????self.Image?=?self.check_image_file()????????self.pictureList?=?[]????def?check_image_file(self):????????_imageType?=?['.jpg',?'.png',?'.bmp']????????if?not?os.path.isfile(self.ImagePath):????????????raise?IOError("請檢查圖片路徑",?self.ImagePath)????????elif?os.path.splitext(self.File)[1].lower()?not?in?_imageType:????????????raise?TypeError("請選擇系統適配的圖片類型",?_imageType)????????else:????????????return?Image.open(self.ImagePath)????def?split_image(self):????????os.chdir(self.Path)????????try:????????????os.makedirs('pictures')????????except?FileExistsError:????????????pass????????width,?height?=?self.Image.size????????_unitHeight?=?height?/?self.SplitTimes????????for?pictureNumber?in?range(self.SplitTimes):????????????_cropBox?=?(0,?_unitHeight?*?pictureNumber,?width?*?0.8,?_unitHeight?*?(pictureNumber?+?1))????????????_unitPicture?=?self.Image.crop(_cropBox)????????????_pictureName?=?os.path.join(self.Path,?'pictures',?"%d.png"?%?pictureNumber)????????????self.pictureList.append(_pictureName)????????????_unitPicture.save(_pictureName)????def?composite_gif(self):????????images?=?[]????????im?=?Image.open(self.pictureList[0])????????for?file?in?self.pictureList[1:]:????????????images.append(Image.open(file))????????gifName?=?os.path.join(self.Path,?"result.gif")????????im.save(gifName,?save_all=True,?loop=True,?append_images=images,?duration=self.SwitchingTime?*?1000)if?__name__?==?'__main__':????parser?=?argparse.ArgumentParser()????parser.add_argument('-p',?'--ImagePath',?help="所需分隔的圖片途徑")????parser.add_argument('-t',?'--SplitTimes',?type=int,?help="圖片分隔次數")????parser.add_argument('-s',?'--SwitchingTime',?type=float,?help="GIF圖片切換時常長(單位:秒),支持小數")????args?=?parser.parse_args()????if?None?in?args.__dict__.values():????????parser.print_help()????else:????????Main?=?SplitLongPicture()????????Main.split_image()????????Main.composite_gif()
from?PIL?import?Image
import?os

class?SplitLongPicture:
????def?__init__(self):
????????self.dirName?=?os.path.split(os.path.abspath(__file__))[0]
????????self.ImagePath?=?args.ImagePath
????????self.SplitTimes?=?args.SplitTimes
????????self.SwitchingTime?=?args.SwitchingTime
????????self.Path,?self.File?=?os.path.split(self.ImagePath)
????????self.Image?=?self.check_image_file()
????????self.pictureList?=?[]

????def?check_image_file(self):
????????_imageType?=?['.jpg',?'.png',?'.bmp']
????????if?not?os.path.isfile(self.ImagePath):
????????????raise?IOError("請檢查圖片路徑",?self.ImagePath)
????????elif?os.path.splitext(self.File)[1].lower()?not?in?_imageType:
????????????raise?TypeError("請選擇系統適配的圖片類型",?_imageType)
????????else:
????????????return?Image.open(self.ImagePath)

????def?split_image(self):
????????os.chdir(self.Path)
????????try:
????????????os.makedirs('pictures')
????????except?FileExistsError:
????????????pass
????????width,?height?=?self.Image.size
????????_unitHeight?=?height?/?self.SplitTimes
????????for?pictureNumber?in?range(self.SplitTimes):
????????????_cropBox?=?(0,?_unitHeight?*?pictureNumber,?width?*?0.8,?_unitHeight?*?(pictureNumber?+?1))
????????????_unitPicture?=?self.Image.crop(_cropBox)
????????????_pictureName?=?os.path.join(self.Path,?'pictures',?"%d.png"?%?pictureNumber)
????????????self.pictureList.append(_pictureName)
????????????_unitPicture.save(_pictureName)

????def?composite_gif(self):
????????images?=?[]
????????im?=?Image.open(self.pictureList[0])
????????for?file?in?self.pictureList[1:]:
????????????images.append(Image.open(file))
????????gifName?=?os.path.join(self.Path,?"result.gif")
????????im.save(gifName,?save_all=True,?loop=True,?append_images=images,?duration=self.SwitchingTime?*?1000)

if?__name__?==?'__main__':
????parser?=?argparse.ArgumentParser()
????parser.add_argument('-p',?'--ImagePath',?help="所需分隔的圖片途徑")
????parser.add_argument('-t',?'--SplitTimes',?type=int,?help="圖片分隔次數")
????parser.add_argument('-s',?'--SwitchingTime',?type=float,?help="GIF圖片切換時常長(單位:秒),支持小數")
????args?=?parser.parse_args()
????if?None?in?args.__dict__.values():
????????parser.print_help()
????else:
????????Main?=?SplitLongPicture()
????????Main.split_image()
????????Main.composite_gif()


代碼順便復習了一下argparse的相關知識。那么該怎么運行呢?
python D:\SplitLongPicture.py -p C:\Users\Administrator\Downloads\520.jpg -t 16 -s 1.25


result.gif


聽完這位小哥哥說的

終于明白什么叫做注孤身了

真的是“憑自己本事”單的身!

沒毛病啊!


送上視頻

大家好好感受一下這位兄弟的“無奈”


如果你還認為,IT男 = 沉悶無趣死宅男?不不不,你錯了


------------------?End?-------------------

總結

以上是生活随笔為你收集整理的520这天,我突然意识到,她根本配不上我这么聪明的男人!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。