欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

別忘了留個(gè)贊

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

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

無(wú)損放大JPG源代碼

#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
from PIL import Image
import time
import shutil
import os
 
 
 
DATA = input('請(qǐng)輸入要放大的圖片名稱(JPG文件名稱必須使用數(shù)字或英文):')
Multiple = int(input('請(qǐng)輸入要放大的圖片的倍數(shù)(必須大于1):'))
DATA_file = input('請(qǐng)輸入要圖片要保存的圖片名稱:')
print('開(kāi)始放大....')
os.mkdir('DATA') # 新建
#讀取圖片  要放大的圖片
src = cv2.imread(DATA)
# 用來(lái)讀取原圖片的像素RGB顏色值  先讀取圖片文件
IMG = Image.open(DATA)
#獲取圖像大小  獲取圖像的大寫XY也是顛倒過(guò)來(lái)的
y, x = src.shape[:2]
 
# 臨時(shí)裝飾器
List_elements = []
for YY in range(y):   # 獲取圖片的Y軸有多少像素  也相當(dāng)于長(zhǎng)度
    '''意思:循環(huán)讀取圖片的每一個(gè)像素點(diǎn)的RGB值 并以列表的形式存儲(chǔ)起來(lái)'''
    if int(len(List_elements)) >= 2:   # 每次循環(huán)完畢后要將列表的值恢復(fù)無(wú)
        List_elements = []
    for XX in range(x):  # 獲取圖片的X軸有多少像素   也相當(dāng)于寬度
        # IMG.getpixel((a, aa))  用來(lái)獲取圖片某位置的RGB像素值  提示:獲取的值 對(duì)應(yīng) BGR  是RGB反過(guò)來(lái)的
        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)  # 延遲一下 ,防止文件加載過(guò)慢讀取錯(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)行繪圖 確保無(wú)損放大'''
    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)橥ㄟ^(guò)getpixel 獲取出來(lái)的顏色是反過(guò)來(lái)的 RGB 也就是 BGR  
        在顏色文件內(nèi)的數(shù)值也是反過(guò)來(lái)的,所以在這里讀取的時(shí)候要將其顛倒一下,反向轉(zhuǎn)換一下
        '''
        _DATA = NAME_[RGB_DATA_X]
        _DATA.reverse()
 
        '''
        當(dāng)前這個(gè)模塊是核心模塊 主要是用來(lái)讀取并繪制出原圖的倍數(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

無(wú)損放大PNG源代碼

#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
from PIL import Image
import time
import shutil
import os
 
 
 
DATA = input('請(qǐng)輸入要放大的圖片名稱(PNG文件名稱必須使用數(shù)字或英文):')
Multiple = int(input('請(qǐng)輸入要放大的圖片的倍數(shù)(必須大于1):'))
DATA_file = input('請(qǐng)輸入要圖片要保存的圖片名稱:')
print('開(kāi)始放大....')
os.mkdir('DATA') # 新建
 
#讀取圖片  要放大的圖片
src = cv2.imread(DATA)
# 用來(lái)讀取原圖片的像素RGB顏色值  先讀取圖片文件
IMG = Image.open(DATA)
#獲取圖像大小  獲取圖像的大寫XY也是顛倒過(guò)來(lái)的
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)于長(zhǎng)度
    '''意思:循環(huán)讀取圖片的每一個(gè)像素點(diǎn)的RGBA值 并以列表的形式存儲(chǔ)起來(lái)'''
    if int(len(List_elements)) >= 2:   # 每次循環(huán)完畢后要將列表的值恢復(fù)無(wú)
        List_elements = []
    for XX in range(x):  # 獲取圖片的X軸有多少像素   也相當(dāng)于寬度
        # IMG.getpixel((a, aa))  用來(lái)獲取圖片某位置的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)   # 延遲一下 ,防止文件加載過(guò)慢讀取錯(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ù)列表
 
# 打開(kāi)寫入模板圖片
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)無(wú)損放大圖片的示例代碼的文章就介紹到這了,更多相關(guān)Python無(wú)損放大圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基礎(chǔ)語(yǔ)音識(shí)別-食物語(yǔ)音識(shí)別baseline(CNN)

    基礎(chǔ)語(yǔ)音識(shí)別-食物語(yǔ)音識(shí)別baseline(CNN)

    這篇文章主要介紹了一個(gè)基礎(chǔ)語(yǔ)音識(shí)別題目-食物語(yǔ)音識(shí)別baseline(CNN),代碼詳細(xì)嗎,對(duì)于想要學(xué)習(xí)語(yǔ)音識(shí)別的朋友可以參考下
    2021-04-04
  • python中如何進(jìn)行連乘計(jì)算

    python中如何進(jìn)行連乘計(jì)算

    在本篇文章里小編給大家分享的是關(guān)于python連乘計(jì)算的代碼,有興趣的朋友們可以參考學(xué)習(xí)下。
    2020-05-05
  • Python使用回溯法子集樹(shù)模板解決爬樓梯問(wèn)題示例

    Python使用回溯法子集樹(shù)模板解決爬樓梯問(wèn)題示例

    這篇文章主要介紹了Python使用回溯法子集樹(shù)模板解決爬樓梯問(wèn)題,簡(jiǎn)單說(shuō)明了爬樓梯問(wèn)題并結(jié)合實(shí)例形式給出了Python回溯法子集樹(shù)模板解決爬樓梯問(wèn)題的相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • python基礎(chǔ)教程項(xiàng)目三之萬(wàn)能的XML

    python基礎(chǔ)教程項(xiàng)目三之萬(wàn)能的XML

    這篇文章主要為大家詳細(xì)介紹了python基礎(chǔ)教程項(xiàng)目三之萬(wàn)能的XML,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python加載數(shù)據(jù)的5種不同方式(收藏)

    Python加載數(shù)據(jù)的5種不同方式(收藏)

    這篇文章主要介紹了Python加載數(shù)據(jù)的5種不同方式(收藏),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 采用Psyco實(shí)現(xiàn)python執(zhí)行速度提高到與編譯語(yǔ)言一樣的水平

    采用Psyco實(shí)現(xiàn)python執(zhí)行速度提高到與編譯語(yǔ)言一樣的水平

    這篇文章主要介紹了采用Psyco實(shí)現(xiàn)python執(zhí)行速度提高到與編譯語(yǔ)言一樣的水平的方法,是非常實(shí)用的Python第三方庫(kù),需要的朋友可以參考下
    2014-10-10
  • python中的sys模塊和os模塊

    python中的sys模塊和os模塊

    這篇文章主要介紹了python中的sys模塊和os模塊,sys模塊提供對(duì)解釋器使用或維護(hù)的一些變量的訪問(wèn),以及與解釋器強(qiáng)烈交互的函數(shù),os模塊提供了多數(shù)操作系統(tǒng)的功能接口函數(shù),下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • python實(shí)現(xiàn)的AES雙向?qū)ΨQ加密解密與用法分析

    python實(shí)現(xiàn)的AES雙向?qū)ΨQ加密解密與用法分析

    這篇文章主要介紹了python實(shí)現(xiàn)的AES雙向?qū)ΨQ加密解密與用法,簡(jiǎn)單分析了AES加密解密算法的基本概念并結(jié)合實(shí)例形式給出了AES加密解密算法的相關(guān)實(shí)現(xiàn)技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2017-05-05
  • 在Python的Django框架中simple-todo工具的簡(jiǎn)單使用

    在Python的Django框架中simple-todo工具的簡(jiǎn)單使用

    這篇文章主要介紹了在Python的Django框架中simple-todo工具的簡(jiǎn)單使用,該工具基于原web.py中的開(kāi)源項(xiàng)目,需要的朋友可以參考下
    2015-05-05
  • python 日期操作類代碼

    python 日期操作類代碼

    這篇文章主要介紹了python 日期操作類代碼,里面涉及了python日期操作的一些基礎(chǔ)知識(shí),需要的朋友可以參考下
    2018-05-05

最新評(píng)論