亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

別忘了留個贊

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

這個是將原圖無損放大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]
 
# 臨時裝飾器
List_elements = []
for YY in range(y):   # 獲取圖片的Y軸有多少像素  也相當(dāng)于長度
    '''意思:循環(huán)讀取圖片的每一個像素點的RGB值 并以列表的形式存儲起來'''
    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)行存儲
    NAME = open(f"DATA/{YY}", 'w')  # 存儲
    NAME.write(str(List_elements))  # 將列表轉(zhuǎn)為字符串保存
    NAME.close()
 
time.sleep(2)  # 延遲一下 ,防止文件加載過慢讀取錯誤
 
# 圖像縮放  要將原圖進(jìn)行翻倍放大  然后在原圖的基礎(chǔ)上進(jìn)行繪圖
result = cv2.resize(src, (x*Multiple,y*Multiple))
 
for RGB_DATA_Y in range(y):  # 循環(huán)所有文件 Y有多少像素 就有多少個RGB顏色文件
    '''循環(huán)讀取剛剛存儲的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)有多少個子列表
        '''
        因為通過getpixel 獲取出來的顏色是反過來的 RGB 也就是 BGR  
        在顏色文件內(nèi)的數(shù)值也是反過來的,所以在這里讀取的時候要將其顛倒一下,反向轉(zhuǎn)換一下
        '''
        _DATA = NAME_[RGB_DATA_X]
        _DATA.reverse()
 
        '''
        當(dāng)前這個模塊是核心模塊 主要是用來讀取并繪制出原圖的倍數(shù) 
        原理:
        result[1,1] = [255,255,255]    填充 圖片的第一個像素為白色   [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)
 
 
 
# 臨時裝飾器
List_elements = []
# 存儲文件的個數(shù) 后期讀取方便,不會錯讀取
Number_documents = 0
 
for YY in range(y):   # 獲取圖片的Y軸有多少像素  也相當(dāng)于長度
    '''意思:循環(huán)讀取圖片的每一個像素點的RGBA值 并以列表的形式存儲起來'''
    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)行存儲   Multiple是倍數(shù)
    for a in range(Multiple):    # Multiple是倍數(shù)  如果是2倍 則生成兩個同樣的顏色文件   在后期進(jìn)行單行輸出多次 確保以像素點進(jìn)行放大
        NAME = open(f"DATA/{Number_documents}", 'w')  # 存儲
        NAME.write(str(List_elements))  # 將列表轉(zhuǎn)為字符串保存
        NAME.close()
        Number_documents = Number_documents + 1
 
time.sleep(1)   # 延遲一下 ,防止文件加載過慢讀取錯誤
 
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實現(xiàn)無損放大圖片的示例代碼的文章就介紹到這了,更多相關(guān)Python無損放大圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

    Python使用回溯法子集樹模板解決爬樓梯問題示例

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

    python基礎(chǔ)教程項目三之萬能的XML

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

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

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

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

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

    python中的sys模塊和os模塊

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

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

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

    在Python的Django框架中simple-todo工具的簡單使用

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

    python 日期操作類代碼

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

最新評論