【Python 无损放大图片】——支持JPG/PNG 可将图片无损放大上万像素

这篇具有很好参考价值的文章主要介绍了【Python 无损放大图片】——支持JPG/PNG 可将图片无损放大上万像素。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点个赞留个关注吧!!

今天做一个超简单的无损放大图片的程序,原理很简单

JPG原理:读取原图片的像素点的RGB颜色值并保存到文件内,然后将原图进行翻倍放大,在放大的图上进行绘制,绘制一个像素的翻倍大小,一行一行的绘制,然后保存并删掉颜色文件

PNG原理:因为有部分PNG是透明的,所以以RGBA颜色值进行保存并绘制,先生成颜色文件和模板图片,模板图片是8UY88767.png 这个模板图片是原图的翻倍大小,是临时的模板,然后生成完毕后再读取颜色文件,在模板图片上进行重组并生成最终的图片,也就是无损放大后的图片

 别忘了留个赞👍

这个是将原图无损放大8倍的效果,JPG格式

【Python 无损放大图片】——支持JPG/PNG 可将图片无损放大上万像素

这个是将原图无损放大8倍的效果,PNG格式

【Python 无损放大图片】——支持JPG/PNG 可将图片无损放大上万像素

 

无损放大JPG源代码:

#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
from PIL import Image
import time
import shutil
import os



DATA = input('请输入要放大的图片名称(JPG文件名称必须使用数字或英文):')
Multiple = int(input('请输入要放大的图片的倍数(必须大于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轴有多少像素  也相当于长度
    '''意思:循环读取图片的每一个像素点的RGB值 并以列表的形式存储起来'''
    if int(len(List_elements)) >= 2:   # 每次循环完毕后要将列表的值恢复无
        List_elements = []
    for XX in range(x):  # 获取图片的X轴有多少像素   也相当于宽度
        # IMG.getpixel((a, aa))  用来获取图片某位置的RGB像素值  提示:获取的值 对应 BGR  是RGB反过来的
        List_elements = List_elements + [list(IMG.getpixel((XX, YY)))]  # 读取某坐标的像素值并将元组为列表进行存储
    NAME = open(f"DATA/{YY}", 'w')  # 存储
    NAME.write(str(List_elements))  # 将列表转为字符串保存
    NAME.close()

time.sleep(2)  # 延迟一下 ,防止文件加载过慢读取错误

# 图像缩放  要将原图进行翻倍放大  然后在原图的基础上进行绘图
result = cv2.resize(src, (x*Multiple,y*Multiple))

for RGB_DATA_Y in range(y):  # 循环所有文件 Y有多少像素 就有多少个RGB颜色文件
    '''循环读取刚刚存储的RGB颜色文件 并循环进行绘制 以倍数进行绘图 确保无损放大'''
    NAME_ = eval(open(f'DATA/{RGB_DATA_Y}', 'r', encoding='utf-8').read())  # 读取文件并转为列表
    for RGB_DATA_X in range(len(NAME_)):  # 获取 文件内有多少个子列表
        '''
        因为通过getpixel 获取出来的颜色是反过来的 RGB 也就是 BGR  
        在颜色文件内的数值也是反过来的,所以在这里读取的时候要将其颠倒一下,反向转换一下
        '''
        _DATA = NAME_[RGB_DATA_X]
        _DATA.reverse()

        '''
        当前这个模块是核心模块 主要是用来读取并绘制出原图的倍数 
        原理:
        result[1,1] = [255,255,255]    填充 图片的第一个像素为白色   [255,255,255] 是RGB的白色颜色数值
        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源代码:文章来源地址https://www.toymoban.com/news/detail-508890.html

#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
from PIL import Image
import time
import shutil
import os



DATA = input('请输入要放大的图片名称(PNG文件名称必须使用数字或英文):')
Multiple = int(input('请输入要放大的图片的倍数(必须大于1):'))
DATA_file = input('请输入要图片要保存的图片名称:')
print('开始放大....')
os.mkdir('DATA') # 新建

#读取图片  要放大的图片
src = cv2.imread(DATA)
# 用来读取原图片的像素RGB颜色值  先读取图片文件
IMG = Image.open(DATA)
#获取图像大小  获取图像的大写XY也是颠倒过来的
y, x = src.shape[:2]

# 模板
# 图像缩放  要将原图进行翻倍放大  然后在原图的基础上进行绘图
result = cv2.resize(src, (x*Multiple,y*Multiple))
# 写入保存图像 - 模板图片不用管
cv2.imwrite('8UY88767.png', result)



# 临时装饰器
List_elements = []
# 存储文件的个数 后期读取方便,不会错读取
Number_documents = 0

for YY in range(y):   # 获取图片的Y轴有多少像素  也相当于长度
    '''意思:循环读取图片的每一个像素点的RGBA值 并以列表的形式存储起来'''
    if int(len(List_elements)) >= 2:   # 每次循环完毕后要将列表的值恢复无
        List_elements = []
    for XX in range(x):  # 获取图片的X轴有多少像素   也相当于宽度
        # IMG.getpixel((a, aa))  用来获取图片某位置的RGBA像素值
        List_elements = List_elements + [IMG.getpixel((XX, YY))]*Multiple   # 读取某坐标的像素值并将元组为列表进行存储   Multiple是倍数
    for a in range(Multiple):    # Multiple是倍数  如果是2倍 则生成两个同样的颜色文件   在后期进行单行输出多次 确保以像素点进行放大
        NAME = open(f"DATA/{Number_documents}", 'w')  # 存储
        NAME.write(str(List_elements))  # 将列表转为字符串保存
        NAME.close()
        Number_documents = Number_documents + 1

time.sleep(1)   # 延迟一下 ,防止文件加载过慢读取错误

DATA_ = list()  # 定义需要处理的数据列表
for a in range(Number_documents):
    NAME = open(f"DATA/{a}", 'r').read()  # 读取颜色文件
    NAME = list(eval(NAME))   # 将颜色文件转换为列表
    for aa in range(len(NAME)):  # 循环读取列表的颜色值
        DATA_.append(NAME[aa])    # 将颜色值保存到数据列表

# 打开写入模板图片
IMG_2 = Image.open('8UY88767.png')
# 转化为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

到了这里,关于【Python 无损放大图片】——支持JPG/PNG 可将图片无损放大上万像素的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java将JPG/PNG图片转换为WEBP格式,以及WEBP转换成JPG/PNG格式

    越来越多的网站采用了webp格式的图片,webp占用空间小,传送更快,画质不降低。经常会遇到图片格式转换的需求,我们可以借助第三方的包,通过Java实现来PG/PNG图片转换为WEBP格式,以及WEBP转换成JPG/PNG格式。 1.maven项目依赖 在pom.xml加入下面的内容 2.代码分享

    2024年02月08日
    浏览(47)
  • 如何才能把图片无损放大?这几个无损放大的方法分享给你们

    在互联网的浩瀚海洋里,我们常常迷失在繁星般的图片之中,寻找那一款能映照出我们内心的头像。无论是渴望在社交媒体上熠熠生辉,还是在游戏世界中塑造独一无二的形象,一个与我们心灵相通的头像总能带给我们难以言喻的喜悦与满足。然而,下载后却往往发现这些图

    2024年01月16日
    浏览(46)
  • arcgis批量导出图片(JPG、BMP、PNG)

    ARCGIS自动批量输出图片(JPG、BMP、PNG) 批量输出图片工具: 免费下载链接: https://pan.baidu.com/s/1gVfTLTxQCQ6uiz1mmtNsNA?pwd=8j5n 提取码: 8j5n 批量快速导出图片(JPG、BMP、PNG ) ,每张图都会独立显示本图斑的范围线,不会附带其他图斑范围线哦,整洁美观!!! 哦耶~~从此,再也不用

    2024年02月09日
    浏览(90)
  • png的图片四通道,jpg为三通道

    输出: (853, 1280, 3) (853, 1280, 4) cv2.imread() 用于读取图片文件 imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种: cv2.IMREAD_COLOR :加载彩色图片,这个是默认参数,可以直接写1。 cv2.IMREAD_GRAYSCALE :以灰度模式加载图片,可以直接写0。 cv

    2024年02月04日
    浏览(43)
  • webpack处理图片资源(jpeg,jpg,png等)

    在webpack5以前,我们处理图片资源通过 file-loader 和 url-loader 进行处理 现在 Webpack5 已经将两个 Loader 功能 内置 到 Webpack 里了,我们只需要简单配置即可处理图片资源 webpack.config.js配置 完整代码如下: 添加图片资源 使用图片资源 执行打包命令 npx webpack 效果如下: 可以看到背

    2024年02月08日
    浏览(98)
  • ffmpeg 将视频帧转换成jpg、png等图片

    有时播放实时流的时候有截图的需求,需要将解码出来的图片保存本地或上传服务器,这时就需要将avframe中的数据编码成png、jpg等格式的图片,我们使用ffmpeg的相关编码器就可以实现功能。 首先需要查找图片编码器,比如jpg为AV_CODEC_ID_MJPEG,png为AV_CODEC_ID_PNG 示例代码: 有了

    2024年02月02日
    浏览(43)
  • C# 使用Bitmap 将byte[] 转成.jpg/.png/gif等图片

    在 C# 中,你可以使用 System.Drawing 命名空间中的 Bitmap 类来将 byte[] 转换为 .jpg 图片。以下是一个示例代码: 在上面的示例中,GetImageBytes 方法是一个用于获取图片的 byte[] 数据的示例方法。你需要根据实际情况自行实现该方法,从文件、网络等地方读取图片数据,并返回 byt

    2024年01月19日
    浏览(40)
  • 怎么在电脑上把jpg改成png?批量图片格式转换器分享推荐

    美工在处理图片时,经常使用png格式图片,所以就会有用到格式转换器(https://www.yasuotu.com/geshi),尤其是在需要处理批量图片的时候,今天介绍的这款批量图片格式转换器,可以在线操作,打开浏览器就能完成png格式转换,非常方便,一起来看一下吧。 使用浏览器搜索【压

    2023年04月24日
    浏览(56)
  • Stable Diffusion放大器 StableSR超清无损放大图片,最大呈现出丰富的细节!

    之前介绍了放大脚本Ultimate SD upscale 但是有一种极其重要的图像放大算法,名为stableSR。 今天,我们必须单独为大家介绍一下它。 这个算法不仅可以放大由stable diffusion生成的图像,即使你从网上随便下载一张图片,也能进行放大。 效果非常惊人。废话不多说,直接开始。 先

    2024年03月27日
    浏览(142)
  • Java给文件加水印,支持.pptx,.doc,.docx,.xls,.xlsx,.pdf,.png,.jpg。

    office 相关格式文档的加密主要使用微软提供的Spire.Office for Java ,free部分有针对性每个类型的API说明和示例,请自行参考以下链接。下面也会附上我在项目中的实际工具类。 Spire.Office for Java | 专业的 Java Office 套件 | 创建、修改、转换、打印 Word/PowerPoint/PDF 文档 我的策略是

    2024年02月12日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包