1. 程式人生 > >二十行程式碼實現圖片轉字元圖片

二十行程式碼實現圖片轉字元圖片

要達到的效果如右圖所示 這裡寫圖片描述 或者這樣這裡寫圖片描述
原始碼如下:

from PIL import Image

ascii_char  =list("/\|()1{}[email protected]%8&WM#ZO0QLCJUYX*hkbdpqwmoahkbdpqwmzcvunxrjft[]?-_+~<>i!lI;:,\"^`'. ")
imgname = "D:/jzm.png"
output ="D:/a.txt"
width =60
height=35

def get_char(r,g,b,alpha= 256):
    length = len(ascii_char)
    gray = int(0.2126
* r + 0.7152 * g + 0.0722 * b) unitcount = (256.0+1)/length return ascii_char[int(gray/unitcount)] img = Image.open(imgname) img = img.resize((width,height),Image.NEAREST) txt = "" for i in range(height): for j in range(width): txt += get_char(*img.getpixel((j,i))) txt += '\n'
with open(output,'w') as f: f.write(txt)

使用python的PIL庫對圖片進行處理,將每個畫素對映到70個字元上,再一個個畫素輸出即可

程式碼註釋:

def get_char(r,g,b,alpha= 256):
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
    unitcount  = (256.0+1)/length
    return  ascii_char[int(gray/unitcount)]

將彩色圖片的RBG數值轉化為灰度值,並根據字元的個數計算出每個字元對應幾個灰度值,因為灰度值為0~255但只有70個字元符號,大約每個字元對應三個灰度值

img  = img.resize((width,height),Image.NEAREST)

對圖片重新設定大小,第二個引數可以設定圖片的質量,有四個選項.NEAREST,BILINEAR,BICUBIC,LANCZOS,預設為第一個,第四個影象質量最高

 txt += get_char(*img.getpixel((j,i)))

img.getpixel(j,i)返回的是一個三元組元素,加*是為了將其分為三個變數值

相關推薦

程式碼實現圖片字元圖片

要達到的效果如右圖所示 或者這樣 原始碼如下: from PIL import Image ascii_char =list("/\|()1{}[email protected]%8&WM#ZO0QLCJUYX*hkbdpqw

FFmpeg程式碼實現視訊jpg圖片

程式碼實現視訊轉圖片主要是使用了FFmpeg視訊編解碼相關的知識,所以首先了解下FFmpeg中的編解碼相關函式以及流程,後面再看程式碼就會比較輕鬆了。 視訊解碼 開啟輸入檔案 avformat_open_input 找到視訊流 av_find_best_stream 找到對應的解碼器 avc

什麼!?幾程式碼實現折線圖!!!

其實折線圖很簡單,並沒有想象的那麼複雜,首先來看看效果圖。 因為折線圖是填充的,且花的順序也有講究,後面的畫的東西可能會吧前面額遮擋掉哦! 下面看程式碼: public class LineGraphView extends View { private in

新浪微博自動轉發評論 原始碼 按鍵精靈實現 詳細註釋 幾程式碼實現 涉及影象識別模擬鍵盤滑鼠

自動翻頁轉發,自動滾屏,一條一條地轉發。 1.開啟微博,登入 2.開啟按鍵精靈,進入除錯 3.回到要轉發的微博介面,按F10啟動轉發。 我的微博已經轉發了很多條。不信可以看看:http://weibo.com/p/1005053019480453/myfollow 原始碼

貪吃蛇程式碼詳解

文章目錄 完整原始碼 詳解 完整原始碼 原文:https://blog.csdn.net/hj7jay/article/details/51011269 <!doctype html> <html> <bod

將你的女神變成字元畫,python只需三程式碼

  專案需求 有時候,我們的女朋友們 總是會莫名其妙的耍點小脾氣~   學習Python中有不明白推薦加入交流群                 號:516107834 &nbs

5程式碼實現微信小程式圖片上傳與騰訊免費5G儲存空間的使用

本文介紹瞭如何在微信小程式開發中使用騰訊官方提供的雲開發功能快速實現圖片的上傳與儲存,以及介紹雲開發的 5G 儲存空間的基本使用方法,這將大大提高微信小程式的開發效率,同時也是微信小程式系列教程的視訊版更新的文字版本摘要。 此文為 「60 節實戰課微信小程式開發視訊教程」 的第 51 小節

如何藉助ImageAI輕鬆實現目標檢測(只需程式碼)

知乎轉載https://www.zhihu.com/question/26483508/answer/447708695 只需10行Python程式碼,我們就能實現計算機視覺中目標檢測。 from imageai.Detection import

Python3實現圖片字元

一、圖片轉字元畫     二、原始碼 # -*- coding: utf-8 -*- from PIL import Image, ImageTk import argparse #命令列輸入引數處理 parser = argparse.ArgumentParse

教你利用Python把圖片字元畫!程式碼哆啦A夢你見過嘛?

圖片轉字元畫的關鍵是把圖片的灰度值與自定義的字符集之間建立對映關係,不同區間的灰度值對應不同的字元,之後將圖片每一個畫素對應的字元打印出來,就是我們要的字元畫。 我們可以使用灰度值公式將畫素的 RGB 值對映到灰度值: gray = 0.2126 * r +

ReactiveSwift原始碼解析() MutableProperty基本程式碼實現

前兩篇部落格我們分別聊了ReactiveSwift框架中的負責標記物件的生命週期的類Lifetime以及負責原子性操作的Atomic類的具體程式碼實現。前兩篇部落格之所以聊Lifetime以及Atomic的程式碼實現,就是為了今天這篇部落格做鋪墊的。在Property以及MutableProperty的程式碼

Python實現圖片字元

初學Python,在網上看到Python圖片轉字元畫的教程,我也來嘗試下。 首先我們要用到Python的PIL庫的Image模組,PIL(Python Imaging Library)庫是Python

如何利用程式碼,繞過防毒軟體實現免殺?

我原本打算寫一篇冗長的部落格講述針對不同防毒軟體的繞過技術,但當我開始著手寫教程的第一章並上傳樣本到 virustotal 後,我震驚了!樣本得到了 0/56 的檢測率。於是我決定扔掉先前的長篇大論,轉而記錄這個快速、令

Win10下 60程式碼實現多執行緒PDFWord 執行錯誤摘要

當我們在win10中按要求裝好包,執行“60行程式碼實現多執行緒PDF轉Word”專案時,總會出現一些編碼問題,現整理如下。 問題一: 解決方案,在主程式中新增程式碼片: import l

python split同時用多種字元分割字串並去除空串 簡單兩程式碼實現

程式碼使用的是python3的語法,python2只需要修改其中部分內容,同樣可以使用 兩行程式碼實現需求 這裡把程式碼直接給出,方便大家直接使用 >>> s

[Android例項] 自定義控制元件一百程式碼實現微信朋友圈九宮格圖片顯示

package com.weixinninegridlayout;import android.content.Context;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android

Python 程式碼實現 JPG圖片PGM圖片

      Python 作為一門強大的語言,實現圖片格式轉換自然是輕輕鬆鬆了,能夠實現 JPG , PNG , TIF , PGM等多種格式之間的轉換。      JPG轉換成PGM格式的程式碼如下,有需要的朋友可以參考~~ # coding=utf-8 import

python 三程式碼實現快速排序

python 三行程式碼實現快速排序 最近在看 python cookbook , 裡面的例子很精彩,這裡就幫過來,做個備忘錄 主要利用了行數的遞迴呼叫和Python的切片特性,解釋一下每行程式碼的含義: 第1行: #coding:utf-8 指定utf

王垠四程式碼mark

最近接觸到一些關於CPS程式設計風格的東西,就去看了看曾今轟動一時的王垠四十行程式碼,看完有種隔行如隔山的感覺。目前只知道這些程式碼能夠自動把一個遞迴函式轉化成尾遞迴的形式,其他的就一竅不通了,只能先把程式碼本身儲存下來以後再研究了 ;; A simple CPS transformer

30程式碼實現Javascript中的MVC

從09年左右開始,MVC逐漸在前端領域大放異彩,並終於在剛剛過去的2015年隨著React Native的推出而迎來大爆發:AngularJS、EmberJS、Backbone、ReactJS、RiotJS、VueJS…… 一連串的名字走馬觀花式的出現和更迭,它們中一些已經漸漸淡出了大家的視