Python3,19行代碼琼稻,我把她的照片寫入到Excel中吮螺,2022年伊始,她終于被我感動(dòng)了欣簇。

19行代碼规脸,把圖片寫到如excel。

小屌絲:魚(yú)哥熊咽,新年快樂(lè)~ ~

小魚(yú):新年快樂(lè)莫鸭,小屌絲,雖然是元旦横殴,但是也算是邁入新的一年了被因,也該有新的形象了。

小屌絲:魚(yú)哥衫仑,你說(shuō)的沒(méi)錯(cuò)啊梨与,新的一年,我要用新的姿勢(shì)去追妹子文狱。

小魚(yú):… 怎么三句不說(shuō)妹子粥鞋,你無(wú)話可說(shuō)了?瞄崇?

小屌絲:妹子是我提升技術(shù)的動(dòng)力呻粹!

小魚(yú):… 好吧,只要你能提升技能苏研,其他的都無(wú)所謂…

小屌絲:呦吼~~ 對(duì)了魚(yú)哥等浊,我記得你有一篇博文,?把文字寫在圖片里?摹蘑。

小魚(yú):對(duì)哦筹燕,不少小伙伴通過(guò)這個(gè)方式,讓自己的女友感動(dòng)了衅鹿。

小屌絲:那能不能把圖片寫在別的地方呢撒踪?

小魚(yú):例如呢?大渤?

小屌絲:excel制妄,word,PDF 等等…

小魚(yú):…唉我去~~

小屌絲:嘿嘿~ ~ 來(lái)嘛 ~ ~

2兼犯、代碼實(shí)戰(zhàn)

2.1 思路

我們今天要分享的,是把圖片寫入到excel中,

注意:

這里說(shuō)的切黔,不是截取一張圖片砸脊,粘貼到excel;

而是通過(guò)像素寫入到excel中纬霞。

我們來(lái)捋一下思路:

準(zhǔn)備源圖片凌埂,目標(biāo)excel;

通過(guò)Pillow 來(lái)讀圖片的取像素(RGB)诗芜;

通過(guò)openpyxl 向excel cell內(nèi)填充十六進(jìn)制色值瞳抓;

最后把轉(zhuǎn)換的RGB像素直接寫入到excel中;

說(shuō)到這里伏恐,就們就來(lái)分步實(shí)現(xiàn)孩哑。

2.2 文件準(zhǔn)備

需要寫入而Excel的源圖片:

2.3 實(shí)戰(zhàn)

2.3.1 安裝

本次需要用到兩個(gè)模塊: Pillow 和 openpyxl 。

老規(guī)矩翠桦, pip 方式安裝:

pipinstallPillow pipinstallopenpyxl

其他方式安裝:

《?Python3横蜒,選擇Python自動(dòng)安裝第三方庫(kù),從此跟pip說(shuō)拜拜O铡丛晌!?

《?Python3:我低調(diào)的只用一行代碼,就導(dǎo)入Python所有庫(kù)6酚住澎蛛!?

2.3.2 代碼實(shí)戰(zhàn)

1、色值轉(zhuǎn)換

由于 圖片讀取的像素是RGB值蜕窿,而excel是十六進(jìn)制寫入谋逻,

所以需要定義一個(gè)RGB與十六進(jìn)制轉(zhuǎn)換的函數(shù)

# -*- coding:utf-8 -*-# @Time? : 2022-01-03# @Author : carl_DJ'''

定義RGB 和十六進(jìn)制色值轉(zhuǎn)換函數(shù)

'''defrgb_to_hex(rgb):rgb = rgb.split(',')? ? color =''#循環(huán)遍歷foriinrgb:? ? ? ? num = int(i)? ? ? ? color? += str(hex(num))[-2:].replace('x','0').upper()returncolor

2、圖片轉(zhuǎn)換

此操作是逐行讀取圖片的 RGB 色值渠羞,再將 RGB 色值轉(zhuǎn)換為十六進(jìn)制色值填充到 Excel 的 cell 中斤贰。

# -*- coding:utf-8 -*-# @Time? : 2022-01-03# @Author : carl_DJ'''

逐行讀取圖片中的RGB色值,再將RGB色值轉(zhuǎn)換十六進(jìn)制次询,填充到excel中

'''defimg_to_excel(img_path,excel_path):#讀取源圖片img_src = Image.open(img_path)#設(shè)置圖片寬高img_width = img_src.size[0]? ? img_hight = img_src.size[1]#圖片加載str_strlist = img_src.load()#獲取當(dāng)前的excel文件wb = openpyxl.Workbook()#保存文件wb.save(excel_path)#打開(kāi)excel_path 下的excel文件荧恍,并寫入信息wb = openpyxl.load_workbook(excel_path)? ? cell_width,cell_height =1.0,1.0#設(shè)置excel的寫入頁(yè)sheet = wb['Sheet']#循環(huán)圖片的高與寬,并存入forwinrange(img_width):forhinrange(img_hight):? ? ? ? ? ? data = str_strlist[w,h]? ? ? ? ? ? color = str(data).replace("(","").replace(")","")? ? ? ? ? ? color? = rgb_to_hex(color)#設(shè)置填充顏色為colorfille = PatternFill("solid",fgColor = color)? ? ? ? ? ? sheet.cell(h +1,w +1).fill = fille#循環(huán)遍歷row,讓其全部寫入foriinrange(1,sheet.max_row +1):? ? ? ? sheet.row_dimensions[i].height = cell_height#循環(huán)遍歷column屯吊,讓其全部寫入foriinrange(1,sheet.max_column +1):? ? ? ? sheet.column_dimensions[get_column_letter(i)].width = cell_width#保存文件wb.save(excel_path)#關(guān)閉img_src.close()

3送巡、代碼整合

# -*- coding:utf-8 -*-# @Time? : 2022-01-03# @Author : carl_DJimportopenpyxlfromopenpyxl.stylesimportPatternFillfromopenpyxl.utilsimportget_column_letterfromPILimportImage,ImageFont,ImageDraw,ImageColor'''

色值轉(zhuǎn)換:

從圖片讀取的像素塊色值是 RGB 值,

RGB 和十六進(jìn)制色值轉(zhuǎn)換。

'''defrgb_to_hex(rgb):rgb = rgb.split(',')? ? color =''#循環(huán)遍歷foriinrgb:? ? ? ? num = int(i)? ? ? ? color? += str(hex(num))[-2:].replace('x','0').upper()returncolor'''

圖片轉(zhuǎn)換:

逐行讀取圖片中的RGB色值盒卸,再將RGB色值轉(zhuǎn)換十六進(jìn)制骗爆,填充到excel中

'''defimg_to_excel(img_path,excel_path):#讀取源圖片img_src = Image.open(img_path)#設(shè)置圖片寬高img_width = img_src.size[0]? ? img_hight = img_src.size[1]#圖片加載str_strlist = img_src.load()#獲取當(dāng)前的excel文件wb = openpyxl.Workbook()#保存文件wb.save(excel_path)#打開(kāi)excel_path 下的excel文件,并寫入信息wb = openpyxl.load_workbook(excel_path)? ? cell_width,cell_height =1.0,1.0#設(shè)置excel的寫入頁(yè)sheet = wb['Sheet']#循環(huán)圖片的高與寬蔽介,并存入forwinrange(img_width):forhinrange(img_hight):? ? ? ? ? ? data = str_strlist[w,h]? ? ? ? ? ? color = str(data).replace("(","").replace(")","")? ? ? ? ? ? color? = rgb_to_hex(color)#設(shè)置填充顏色為colorfille = PatternFill("solid",fgColor = color)? ? ? ? ? ? sheet.cell(h +1,w +1).fill = fille#循環(huán)遍歷row,讓其全部寫入foriinrange(1,sheet.max_row +1):? ? ? ? sheet.row_dimensions[i].height = cell_height#循環(huán)遍歷column摘投,讓其全部寫入foriinrange(1,sheet.max_column +1):? ? ? ? sheet.column_dimensions[get_column_letter(i)].width = cell_width#保存文件wb.save(excel_path)#關(guān)閉img_src.close()if__name__ =='__main__':#源圖片地址img_path ='./queue.jgp'#保存excel地址excel_path ='./queue.xlsx'#執(zhí)行img_to_excel(img_path, excel_path)

4煮寡、運(yùn)行結(jié)果

寫到這里,今天的分享就差不多結(jié)束了犀呼。

因?yàn)榻裉煲灿玫搅薖illow幸撕,如果想快速入手,可以參照小魚(yú)的這篇博文《?Python3外臂,10行代碼坐儿,我把情書(shū)寫在她的照片里,她被我的才華征服了宋光。?

這里小魚(yú)提醒一下貌矿,

如果你的源圖片很大,運(yùn)行完成后罪佳,打開(kāi)Excel會(huì)提示文件損壞逛漫,

因?yàn)镋xcel的行數(shù)有限,導(dǎo)致無(wú)法全部寫完數(shù)據(jù)菇民。

Excel報(bào)錯(cuò)詳情:

xml報(bào)錯(cuò)詳情:

<?xml version="1.0"encoding="UTF-8"standalone="yes"?>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尽楔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子第练,更是在濱河造成了極大的恐慌阔馋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娇掏,死亡現(xiàn)場(chǎng)離奇詭異呕寝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)婴梧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門下梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人塞蹭,你說(shuō)我怎么就攤上這事孽江。” “怎么了番电?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵岗屏,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我漱办,道長(zhǎng)这刷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任娩井,我火速辦了婚禮暇屋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洞辣。我一直安慰自己咐刨,他們只是感情好昙衅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著定鸟,像睡著了一般绒尊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仔粥,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蟹但,去河邊找鬼躯泰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛华糖,可吹牛的內(nèi)容都是我干的麦向。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼客叉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼诵竭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起兼搏,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卵慰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后佛呻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體裳朋,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年吓著,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鲤嫡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绑莺,死狀恐怖暖眼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纺裁,我是刑警寧澤诫肠,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站对扶,受9級(jí)特大地震影響区赵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浪南,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一笼才、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧络凿,春花似錦骡送、人聲如沸昂羡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)虐先。三九已至,卻和暖如春派敷,著一層夾襖步出監(jiān)牢的瞬間蛹批,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工篮愉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腐芍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓试躏,卻偏偏與公主長(zhǎng)得像猪勇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颠蕴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容