最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)無損放大圖片的示例代碼

 更新時(shí)間:2022年08月31日 14:19:19   作者:小木_.  
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)一個(gè)簡單的無損放大圖片小程序,可以支持將JPG/PNG圖片無損放大上萬像素,感興趣的可以了解一下

今天做一個(gè)超簡單的無損放大圖片的程序,原理很簡單

JPG原理:讀取原圖片的像素點(diǎn)的RGB顏色值并保存到文件內(nèi),然后將原圖進(jìn)行翻倍放大,在放大的圖上進(jìn)行繪制,繪制一個(gè)像素的翻倍大小,一行一行的繪制,然后保存并刪掉顏色文件

PNG原理:因?yàn)橛胁糠諴NG是透明的,所以以RGBA顏色值進(jìn)行保存并繪制,先生成顏色文件和模板圖片,模板圖片是8UY88767.png 這個(gè)模板圖片是原圖的翻倍大小,是臨時(shí)的模板,然后生成完畢后再讀取顏色文件,在模板圖片上進(jìn)行重組并生成最終的圖片,也就是無損放大后的圖片

別忘了留個(gè)贊

這個(gè)是將原圖無損放大8倍的效果,JPG格式

這個(gè)是將原圖無損放大8倍的效果,PNG格式

無損放大JPG源代碼

#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
from PIL import Image
import time
import shutil
import os
 
 
 
DATA = input('請輸入要放大的圖片名稱(JPG文件名稱必須使用數(shù)字或英文):')
Multiple = int(input('請輸入要放大的圖片的倍數(shù)(必須大于1):'))
DATA_file = input('請輸入要圖片要保存的圖片名稱:')
print('開始放大....')
os.mkdir('DATA') # 新建
#讀取圖片  要放大的圖片
src = cv2.imread(DATA)
# 用來讀取原圖片的像素RGB顏色值  先讀取圖片文件
IMG = Image.open(DATA)
#獲取圖像大小  獲取圖像的大寫XY也是顛倒過來的
y, x = src.shape[:2]
 
# 臨時(shí)裝飾器
List_elements = []
for YY in range(y):   # 獲取圖片的Y軸有多少像素  也相當(dāng)于長度
    '''意思:循環(huán)讀取圖片的每一個(gè)像素點(diǎn)的RGB值 并以列表的形式存儲(chǔ)起來'''
    if int(len(List_elements)) >= 2:   # 每次循環(huán)完畢后要將列表的值恢復(fù)無
        List_elements = []
    for XX in range(x):  # 獲取圖片的X軸有多少像素   也相當(dāng)于寬度
        # IMG.getpixel((a, aa))  用來獲取圖片某位置的RGB像素值  提示:獲取的值 對應(yīng) BGR  是RGB反過來的
        List_elements = List_elements + [list(IMG.getpixel((XX, YY)))]  # 讀取某坐標(biāo)的像素值并將元組為列表進(jìn)行存儲(chǔ)
    NAME = open(f"DATA/{YY}", 'w')  # 存儲(chǔ)
    NAME.write(str(List_elements))  # 將列表轉(zhuǎn)為字符串保存
    NAME.close()
 
time.sleep(2)  # 延遲一下 ,防止文件加載過慢讀取錯(cuò)誤
 
# 圖像縮放  要將原圖進(jìn)行翻倍放大  然后在原圖的基礎(chǔ)上進(jìn)行繪圖
result = cv2.resize(src, (x*Multiple,y*Multiple))
 
for RGB_DATA_Y in range(y):  # 循環(huán)所有文件 Y有多少像素 就有多少個(gè)RGB顏色文件
    '''循環(huán)讀取剛剛存儲(chǔ)的RGB顏色文件 并循環(huán)進(jìn)行繪制 以倍數(shù)進(jìn)行繪圖 確保無損放大'''
    NAME_ = eval(open(f'DATA/{RGB_DATA_Y}', 'r', encoding='utf-8').read())  # 讀取文件并轉(zhuǎn)為列表
    for RGB_DATA_X in range(len(NAME_)):  # 獲取 文件內(nèi)有多少個(gè)子列表
        '''
        因?yàn)橥ㄟ^getpixel 獲取出來的顏色是反過來的 RGB 也就是 BGR  
        在顏色文件內(nèi)的數(shù)值也是反過來的,所以在這里讀取的時(shí)候要將其顛倒一下,反向轉(zhuǎn)換一下
        '''
        _DATA = NAME_[RGB_DATA_X]
        _DATA.reverse()
 
        '''
        當(dāng)前這個(gè)模塊是核心模塊 主要是用來讀取并繪制出原圖的倍數(shù) 
        原理:
        result[1,1] = [255,255,255]    填充 圖片的第一個(gè)像素為白色   [255,255,255] 是RGB的白色顏色數(shù)值
        result[0:2,0:4] = [255,255,255]      填充圖片 X軸從0像素到2像素為白色  Y軸從0像素到4像素為白色  
        '''
        try:
            result[RGB_DATA_Y*Multiple:RGB_DATA_Y*Multiple+Multiple,RGB_DATA_X*Multiple:RGB_DATA_X*Multiple+Multiple] = _DATA
        except:pass
# 寫入保存圖像
cv2.imwrite(DATA_file, result)
print('完成....')
try:
    shutil.rmtree("DATA") # 刪除文件夾和文件
except:pass

無損放大PNG源代碼

#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
from PIL import Image
import time
import shutil
import os
 
 
 
DATA = input('請輸入要放大的圖片名稱(PNG文件名稱必須使用數(shù)字或英文):')
Multiple = int(input('請輸入要放大的圖片的倍數(shù)(必須大于1):'))
DATA_file = input('請輸入要圖片要保存的圖片名稱:')
print('開始放大....')
os.mkdir('DATA') # 新建
 
#讀取圖片  要放大的圖片
src = cv2.imread(DATA)
# 用來讀取原圖片的像素RGB顏色值  先讀取圖片文件
IMG = Image.open(DATA)
#獲取圖像大小  獲取圖像的大寫XY也是顛倒過來的
y, x = src.shape[:2]
 
# 模板
# 圖像縮放  要將原圖進(jìn)行翻倍放大  然后在原圖的基礎(chǔ)上進(jìn)行繪圖
result = cv2.resize(src, (x*Multiple,y*Multiple))
# 寫入保存圖像 - 模板圖片不用管
cv2.imwrite('8UY88767.png', result)
 
 
 
# 臨時(shí)裝飾器
List_elements = []
# 存儲(chǔ)文件的個(gè)數(shù) 后期讀取方便,不會(huì)錯(cuò)讀取
Number_documents = 0
 
for YY in range(y):   # 獲取圖片的Y軸有多少像素  也相當(dāng)于長度
    '''意思:循環(huán)讀取圖片的每一個(gè)像素點(diǎn)的RGBA值 并以列表的形式存儲(chǔ)起來'''
    if int(len(List_elements)) >= 2:   # 每次循環(huán)完畢后要將列表的值恢復(fù)無
        List_elements = []
    for XX in range(x):  # 獲取圖片的X軸有多少像素   也相當(dāng)于寬度
        # IMG.getpixel((a, aa))  用來獲取圖片某位置的RGBA像素值
        List_elements = List_elements + [IMG.getpixel((XX, YY))]*Multiple   # 讀取某坐標(biāo)的像素值并將元組為列表進(jìn)行存儲(chǔ)   Multiple是倍數(shù)
    for a in range(Multiple):    # Multiple是倍數(shù)  如果是2倍 則生成兩個(gè)同樣的顏色文件   在后期進(jìn)行單行輸出多次 確保以像素點(diǎn)進(jìn)行放大
        NAME = open(f"DATA/{Number_documents}", 'w')  # 存儲(chǔ)
        NAME.write(str(List_elements))  # 將列表轉(zhuǎn)為字符串保存
        NAME.close()
        Number_documents = Number_documents + 1
 
time.sleep(1)   # 延遲一下 ,防止文件加載過慢讀取錯(cuò)誤
 
DATA_ = list()  # 定義需要處理的數(shù)據(jù)列表
for a in range(Number_documents):
    NAME = open(f"DATA/{a}", 'r').read()  # 讀取顏色文件
    NAME = list(eval(NAME))   # 將顏色文件轉(zhuǎn)換為列表
    for aa in range(len(NAME)):  # 循環(huán)讀取列表的顏色值
        DATA_.append(NAME[aa])    # 將顏色值保存到數(shù)據(jù)列表
 
# 打開寫入模板圖片
IMG_2 = Image.open('8UY88767.png')
# 轉(zhuǎn)化為RGBA
RGBA_IMG = IMG_2.convert("RGBA")
RGBA_IMG.putdata(DATA_)  # 寫入圖片
RGBA_IMG.save(DATA_file, "PNG")  # 保存圖片
print('完成....')
try:
    shutil.rmtree("DATA") # 刪除文件夾和文件
except:pass
try:
    os.remove("8UY88767.png") # 刪除文件
except:pass

到此這篇關(guān)于Python實(shí)現(xiàn)無損放大圖片的示例代碼的文章就介紹到這了,更多相關(guān)Python無損放大圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 實(shí)現(xiàn)將numpy中的nan和inf,nan替換成對應(yīng)的均值

    Python 實(shí)現(xiàn)將numpy中的nan和inf,nan替換成對應(yīng)的均值

    這篇文章主要介紹了Python 實(shí)現(xiàn)將numpy中的nan和inf,nan替換成對應(yīng)的均值,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 淺談一下四則運(yùn)算和二叉樹

    淺談一下四則運(yùn)算和二叉樹

    這篇文章主要淺談一下四則運(yùn)算和二叉樹,因?yàn)榭偸且姷桨?四則運(yùn)算表達(dá)式?用?樹?的形式來展示,所以就想著給定一顆表達(dá)式樹,計(jì)算它的結(jié)果出來,需要的朋友可以參考下
    2023-04-04
  • python批量修改文件名的示例

    python批量修改文件名的示例

    這篇文章主要介紹了python批量修改文件名的示例,幫助大家更好的使用python處理文件,感興趣的朋友可以了解下
    2020-09-09
  • python怎么自定義捕獲錯(cuò)誤

    python怎么自定義捕獲錯(cuò)誤

    在本篇文章里小編給大家分享了關(guān)于python自定義捕獲錯(cuò)誤的方法,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 推薦系統(tǒng)MostPopular算法的Python實(shí)現(xiàn)方式

    推薦系統(tǒng)MostPopular算法的Python實(shí)現(xiàn)方式

    這篇文章主要介紹了推薦系統(tǒng)MostPopular算法的Python實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python爬蟲常用小技巧之設(shè)置代理IP

    Python爬蟲常用小技巧之設(shè)置代理IP

    這篇文章主要給大家介紹了關(guān)于Python爬蟲常用小技巧之設(shè)置代理IP的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • python簡單爬蟲--get方式詳解

    python簡單爬蟲--get方式詳解

    本篇文章介紹了python爬蟲中g(shù)et和post方法介紹以及cookie作用,對此有興趣的朋友學(xué)習(xí)下,希望能夠給你帶來幫助
    2021-09-09
  • Python 處理表格進(jìn)行成績排序的操作代碼

    Python 處理表格進(jìn)行成績排序的操作代碼

    這篇文章主要介紹了Python 處理表格進(jìn)行成績排序,也就是說將學(xué)生從按照學(xué)號(hào)排序變?yōu)榘凑粘煽儚母叩降瓦M(jìn)行排序,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧
    2021-07-07
  • python中f字符串以及其常見用法總結(jié)

    python中f字符串以及其常見用法總結(jié)

    python中的f是format函數(shù)的縮寫,用于格式化輸出,下面這篇文章主要給大家介紹了關(guān)于python中f字符串以及其常見用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Python模擬鍵盤輸入自動(dòng)登錄TGP

    Python模擬鍵盤輸入自動(dòng)登錄TGP

    這篇文章主要介紹了Python模擬鍵盤輸入自動(dòng)登錄TGP的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11

最新評論

皮山县| 洱源县| 肇庆市| 山东省| 定边县| 葫芦岛市| 康保县| 蕉岭县| 拉孜县| 迁安市| 正蓝旗| 平泉县| 潢川县| 永新县| 海林市| 甘孜| 牟定县| 海丰县| 广灵县| 安国市| 乌苏市| 潮安县| 白朗县| 西乌| 新昌县| 二手房| 普宁市| 福贡县| 如东县| 绩溪县| 定日县| 固原市| 巴林右旗| 溆浦县| 绥德县| 海盐县| 化州市| 五原县| 武城县| 紫金县| 平顶山市|