华南俳烁实业有限公司

python

當(dāng)前位置:中華考試網(wǎng) >> python >> python教程 >> 文章內(nèi)容

python中怎么像PS一樣處理圖像

來(lái)源:中華考試網(wǎng)  [2020年9月30日]  【

   Python中怎么像PS一樣處理圖像?

  在Python中有著豐富的第三方模塊可以使用,PIL:Python Imaging Library是Python平臺(tái)上的圖像處理標(biāo)準(zhǔn)庫(kù)了。PIL功能非常強(qiáng)大,但API卻非常簡(jiǎn)單易用。

  安裝PIL

  在Debian/Ubuntu Linux下直接通過(guò)apt安裝:

  $ sudo apt-get install python-imaging

  Mac和其他版本的Linux可以直接使用easy_install或pip安裝,安裝前需要把編譯環(huán)境裝好:

  $ sudo easy_install PIL

  如果安裝失敗,根據(jù)提示先把缺失的包(比如openjpeg)裝上。

  Windows平臺(tái)就去PIL官方網(wǎng)站下載exe安裝包。

  操作圖像

  來(lái)看看最常見的圖像縮放操作,只需三四行代碼:

  import Image

  # 打開一個(gè)jpg圖像文件,注意路徑要改成你自己的:

python課程免費(fèi)試聽預(yù)約

  • 地區(qū):
  • 姓名:
  • 手機(jī):

  im = Image.open('/Users/michael/test.jpg')

  # 獲得圖像尺寸:

  w, h = im.size

  # 縮放到50%:

  im.thumbnail((w//2, h//2))

  # 把縮放后的圖像用jpeg格式保存:

  im.save('/Users/michael/thumbnail.jpg', 'jpeg')

  其他功能如切片、旋轉(zhuǎn)、濾鏡、輸出文字、調(diào)色板等一應(yīng)俱全。

  比如,模糊效果 也只需幾行代碼:

  import Image, ImageFilter

  im = Image.open('/Users/michael/test.jpg')

  im2 = im.filter(ImageFilter.BLUR)

  im2.save('/Users/michael/blur.jpg', 'jpeg')

  PIL的ImageDraw提供了一系列繪圖方法 ,讓我們可以直接繪圖。比如要生成字母驗(yàn)證碼圖片

  import Image, ImageDraw, ImageFont, ImageFilter

  import random

  # 隨機(jī)字母:

  def rndChar():

  return chr(random.randint(65, 90))

  # 隨機(jī)顏色1:

  def rndColor():

  return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

  # 隨機(jī)顏色2:

  def rndColor2():

  return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

  # 240 x 60:

  width = 60 * 4

  height = 60

  image = Image.new('RGB', (width, height), (255, 255, 255))

  # 創(chuàng)建Font對(duì)象:

  font = ImageFont.truetype('Arial.ttf', 36)

  # 創(chuàng)建Draw對(duì)象:

  draw = ImageDraw.Draw(image)

  # 填充每個(gè)像素:

  for x in range(width):

  for y in range(height):

  draw.point((x, y), fill=rndColor())

  # 輸出文字:

  for t in range(4):

  draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())

  # 模糊:

  image = image.filter(ImageFilter.BLUR)

  image.save('code.jpg', 'jpeg');

  我們用隨機(jī)顏色填充背景,再畫上文字,最后對(duì)圖像進(jìn)行模糊,得到驗(yàn)證碼圖片

  如果運(yùn)行的時(shí)候報(bào)錯(cuò):

  IOError: cannot open resource

  這是因?yàn)镻IL無(wú)法定位到字體文件的位置,可以根據(jù)操作系統(tǒng)提供絕對(duì)路徑,比如:

  '/Library/Fonts/Arial.ttf'

責(zé)編:hym
  • 會(huì)計(jì)考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語(yǔ)考試
  • 學(xué)歷考試
河北省| 尖扎县| 长岛县| 米易县| 雅安市| 汝南县| 江津市| 朝阳县| 峨眉山市| 福鼎市| 砚山县| 商都县| 平武县| 河东区| 肥城市| 吴忠市| 古交市| 山东省| 平泉县| 永康市| 彭泽县| 禹城市| 婺源县| 白玉县| 双辽市| 广德县| 潞城市| 潞西市| 洪洞县| 花莲县| 仪陇县| 萍乡市| 绥江县| 商河县| 靖江市| 汝城县| 保德县| 漯河市| 玉山县| 盐边县| 民勤县|