首页
/
每日頭條
/
科技
/
python編程代碼打印圖畫
python編程代碼打印圖畫
更新时间:2024-10-01 04:28:27

文 | JiawuLab ,原創作品。

前兩天,我用Python寫了個小程序,主要功能是将一張圖輸入後,程序會輸出字符圖,然後将字符圖保存在txt文本中,效果圖如下:

python編程代碼打印圖畫(如何用Python寫一個小程序)1

表情包轉化為字符圖

昨天将這個小程序的一些技術要點發布到了微頭條中,這裡将技術要點貼出來:

1、首先對圖片進行黑白處理、對比度處理,這樣可以去除很多的噪點,
2、然後使用了getpixel()方法,該方法可以得到當前位置圖片的顔色值,
3、再通過顔色值的判斷,就能将不同的顔色值處理成對應的符号,這裡我處理為“#“ ,
4、最後将所有顔色值處理後得到的符号信息,保存為txt文件。

python編程代碼打印圖畫(如何用Python寫一個小程序)2

微頭條閱讀數一天過萬

如上圖,微頭條獲得很多朋友的關注,短短一天的時間,閱讀數就突破了1萬2,特别高興,我會繼續加油的。

本篇文章将創造這個小程序中的思考與實踐過程分享給大家,也期待大家能理解造輪子過程的樂趣。


一、為什麼會寫這個小程序?

說來話并不長,在學習群中,有位可愛的同學,分享了一張某程序員的注釋圖,裡面寫了篇打油詩,還配了張字符圖,就是下面這張圖:

python編程代碼打印圖畫(如何用Python寫一個小程序)3

同學分享的圖

看得出作者非常的有才氣,隻是好像言語之中透露了某些信息,哈哈〜

而我看到的就是下面這尊字符串佛像,觸發了自己寫個小程序将圖片轉換為字符圖的念頭,這就是我寫這個小程序的初衷。


二、思考過程

我初步的想法是:

1、在網上找一張圖,然後将圖片轉化為黑白圖,
2、利用PIL庫中的方法,獲取圖片上的顔色數值,
3、将黑色和白色的部分,分别用不同的字符串代替

最後打印出來就可以了,而且技術實現也很簡單。


三、實踐過程

首先,我在網上找到了一張很有feel的圖片,如下圖:

python編程代碼打印圖畫(如何用Python寫一個小程序)4

圖片來自網絡

技術實現過程如下:

1、convert('1'),用來轉化為黑白圖,
2、使用PIL庫中的getpixel()方法獲取顔色數值,此時隻有“0”、“1”,
3、使用"for"循環,遍曆整張圖片,将“0”、“1”分别用“ ”,“#”代替,得到字符串并打印

運行代碼,發現圖片太大,顯示不出來,如下圖中紅色箭頭指的部分,隻是圖片中最左上角的一點:

python編程代碼打印圖畫(如何用Python寫一個小程序)5

圖片太大

于是改代碼,做出下面兩點修改

1、利用“resize”函數,将圖片尺寸更改為固定寬度“150”,高度使用運算公式獲取,代碼為:“im.resize((150, int(im.size[1]/im.size[0]*150)))”
2、将字符串,輸出到“txt”文本中,方便運行查看

運行後,打開保存的txt文件,發現全糊了,根本看不清是什麼。

python編程代碼打印圖畫(如何用Python寫一個小程序)6

全糊了

如上圖,完全看不出是什麼,于是我用“im.show()”方法,查看了黑白圖片是什麼樣的:

python編程代碼打印圖畫(如何用Python寫一個小程序)7

黑白圖片

從這裡就能看出來,原來生成的黑白圖片的噪點太多,除了獅子是糊的,左下角也都是噪點。

所以在原圖轉為黑白圖片前,需要做一下圖片處理,這裡就會用到"ImageEnhance"方法,進行對比度等圖片處理,比如此處用到的對比度圖片代碼為“ImageEnhance.Contrast(im).enhance(2.0)”

python編程代碼打印圖畫(如何用Python寫一個小程序)8

對比度處理後

這樣就好很多了,圖片上基本上沒有太多噪點了,獅子整體也非常明顯,但是有點太亮了,所以再次使用亮度處理,代碼為“ImageEnhance.Brightness(im).enhance(0.9)”

python編程代碼打印圖畫(如何用Python寫一個小程序)9

亮度處理後

現在黑白圖片整體看上去,就比較不錯了,可以進行字符圖的生成。

在前面生成的字符圖中,我發現一個問題,周邊設置為空白,不是很好看,所以修改技術點為:

将“0”、“1”分别用“ ”,“#”代替——改為将“0”、“1”分别用“#”,“ ”代替

隻是将字符串替換了一下,最後得到的字符圖為:

python編程代碼打印圖畫(如何用Python寫一個小程序)10

最終效果

一隻王者氣派的獅子字符圖就做好了,是不是很像那麼回事。

在圖片處理過程中,其實做了很多動作,包括選擇圖片處理效果時,使用了很多的方法,最後确定下來使用對比度和亮度的結合。

而對比度和亮度處理中的參數,也需要不斷的進行優化,最後才能呈現出比較漂亮的結果。

python編程代碼打印圖畫(如何用Python寫一個小程序)11

對比圖

如上圖,放上原圖和字符圖的對比效果,字符圖會有一些縱向拉伸的效果,這是因為txt文件的行間距的問題。換個角度來看,這就是天然的瘦身效果哦。


四、複雜背景圖片的演示

獅子這張圖是背景比較簡單的圖片,那麼背景複雜的效果又會如何呢?(永遠要有一顆折騰的心〜)

我在網上找到一張背景複雜的圖片,如下圖:

python編程代碼打印圖畫(如何用Python寫一個小程序)12

圖片來自網絡

然後運行程序,看看會得到什麼呢?(我想應該美女應該會變瘦哦,哈哈〜)

python編程代碼打印圖畫(如何用Python寫一個小程序)13

效果圖

果然,生成的字符圖中,美女變得又高又瘦,我感覺比原圖更好看啦〜

python編程代碼打印圖畫(如何用Python寫一個小程序)14

換個圖演示一下

我又找了另一張圖,生成的效果,還不錯吧。


五、代碼分享

最後,我将代碼分享給大家,整個代碼不到20行,特别簡單:


python編程代碼打印圖畫(如何用Python寫一個小程序)15

需要提醒的是:有些圖片生成的字符圖會不太好看,你自己可以根據需要調整參數或是圖片處理方法。


六、總結

本期文章中,我将創作一個小程序的整個過程分享出來,其中包含前期的思考過程,功能實踐過程,以及功能調優過程。

我認為最重要的一點就是前期的思考過程,通過對需求的分析,能夠讓我們找到合适的技術實現要點,從而讓整個實踐過程可控,能更順利的實現功能。

希望你喜歡本期的分享,歡迎大家在評論區讨論、轉發,或者順手點個贊。謝謝。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
蜘蛛網中的女孩電影原著(蜘蛛網中的女孩的高科技狙擊)
蜘蛛網中的女孩電影原著(蜘蛛網中的女孩的高科技狙擊)
  電影《蜘蛛網中的女孩》結尾的高科技狙擊槍狙殺,非常震撼大緻原理如下:主要需要現場房間内并聯的視頻信号轉接無線發射器、附近車外的視頻信号收集還原設備(鍋蓋天線)、車内高端聯網電腦上的視頻分析還原軟件和遠處聯網的巴雷特大狙這四大件、三人小組首先女主潛入遍布監控的樓房,在監控網絡服務器上接好發射器(也是電磁波讀寫器)接着附近車内的黑客高手操作電腦,讀取收到的無...
2024-10-01
鍵盤f1
鍵盤f1
  F1~F12都有什麼用?電腦鍵盤都至少有12個功能鍵,通常被稱為F鍵功能區,其位置一般是在鍵盤頂部,從F1到F12。不過你知道所有這些鍵的作用嗎?你知道這些鍵怎樣為你節省時間嗎?鍵盤上一些鍵我們平常很少用到,比如F1~F12功能鍵,除了平常會用下F5刷新外其他的鍵好像就很少碰了,其實那是大家不知道這些鍵有什麼作用,今天就讓大家學習下。      F1: ...
2024-10-01
新一代奧迪a8國内實拍(用科技诠釋新主義豪華)
新一代奧迪a8國内實拍(用科技诠釋新主義豪華)
  一個品牌能給消費者帶來什麼?是在人前顯耀的LOGO,是舒适的享受,是潮流的目光?一個品牌能給産生的附加值有時候遠比産品本身要高,汽車領域中除了那些可以說奢華的勞斯萊斯、賓利等,國人最認同的豪華品牌,當屬德國三駕馬車,奧迪、寶馬、奔馳。而在品牌層面,奔馳給人的感覺是商務、寶馬是運動,奧迪給人的最深刻印象便是科技。         無論是A1到Q7這種級别不...
2024-10-01
開票軟件複核人和收款人如何設置(稅務UKey版開票軟件)
開票軟件複核人和收款人如何設置(稅務UKey版開票軟件)
  财稅答疑問:請問發票上的開票人、複核人、收款人是否必須是不同的人員?   答:國家稅務總局網站回複:對于發票開票人、收款人和複核人能否為同一人,稅法中沒有明确規定,按照會計相互制約原則,開票人和複核人不為同一人,收款人和複核人不為同一人,具體要求建議咨詢主管稅務機關。      操作員管理1、開票軟件中如何添加、修改開票人/收款人/複核人。登錄開票軟件,...
2024-10-01
大風七八級該如何防範(8級大風能吹跑瘦子嗎)
大風七八級該如何防範(8級大風能吹跑瘦子嗎)
  中國天氣網獨家報道 眼下,大概沒有哪種天氣像大風這樣讓人又愛又恨了。沒風的時候霧霾當道,盼風心切;等到風吹來了藍天,卻也附送刺骨寒冷和一分鐘換三種發型的技能,而且瘦子們還要擔心萬一被吹跑咋辦。之前廣為流傳的體重抗風表,靠譜不?天氣預報常說的幾級風到底對應啥感覺?   誰說瘦子扛不住8級大風   曾經網傳很火的一個體重和抗風級表顯示,100斤以下的瘦子,8...
2024-10-01
Copyright 2023-2024 - www.tftnews.com All Rights Reserved