libpng warning iCCP 错误处理方法

2023-11-15

png图片缺乏某些库,导致损坏,或者多余了一些数据会导致以下报错:

libpng warning: iCCP: known incorrect sRGB profile
libpng warning iccp extra compressed data

一些可能的解决方案:

已有方案

来自:https://blog.csdn.net/qq_37924224/article/details/119181028

libpng 1.6及以上版本增强了ICC profiles检查,所以发出警告。从 PNG 图像中删除 iCCP profiles。

可以先读取,再重新保存:

import cv2
from skimage import io
image = io.imread(path)
image = cv2.cvtColor(image, cv2.COLOR_RGBA2BGRA)
cv2.imencode('.png',image)[1].tofile(path)

本文提供方案

观察到报错的图片根本无法打开,选择删除对应图片。

文件结构:

- all
  - train
    - folder1
      - img1.png
      - ....
      - imgn.png
    - foler2
      - ...
  - test
    - folder1
      - img1.png
      - ....
      - imgn.png
    - foler2
      - ...

实现功能:

重命名文件夹,重命名文件名称(ps: 原来是有中文的),使用convert命令转换png为jpg

import os
import cv2 
import random 

dir_path = "all/train"


def rename_folder():
    for idx, subdir in enumerate(os.listdir(dir_path)):
        new_folder = "%s_" % (str(random.randint(0,10000))) + str(idx)
        whole_subdir = os.path.join(dir_path, subdir)
        whole_newdir = os.path.join(dir_path, new_folder)
        # print(f"rename {whole_subdir} to {whole_newdir}")
        os.rename(whole_subdir, whole_newdir)


def rename():
    # rename files
    for subdir in os.listdir(dir_path):
        whole_path = os.path.join(dir_path, subdir)
        for idx, img_name in enumerate(os.listdir(whole_path)):
            postfix = "png" if img_name.endswith("png") else "jpg"
            new_img_name = str(idx) + "." + postfix

            org_path = os.path.join(whole_path, img_name)
            new_path = os.path.join(whole_path, new_img_name)

            #     print(f"rename {org_path} to {new_path}")
            os.rename(org_path, new_path)


def convert_png2jpg():
    # convert
    for subdir in os.listdir(dir_path):
        whole_path = os.path.join(dir_path, subdir)
        for img_name in os.listdir(whole_path):
            img_whole_path = os.path.join(whole_path, img_name)
            if img_name.endswith("png"):
                # print(img_whole_path)
                img = cv2.imread(img_whole_path)
                cv2.imwrite(img_whole_path, img)
                os.system(
                    "convert %s %s"
                    % (img_whole_path, img_whole_path.replace("png", "jpg"))
                )


def main():
    # run with nohup
    # 1. rm nohup.out
    # 2. nohup python convert_png.py
    rename_folder()
    rename()
    convert_png2jpg()


if __name__ == "__main__":
    main()

这个时候有可能会出现报错:

在这里插入图片描述

这些无法convert的文件就是需要删除的对象,通过正则化方法匹配对应文件, 并删除。

import os


def main():
    rm_list = greps()
    rm(rm_list)


def greps():
    import re

    rm_list = []
    file = "nohup.out"
    f = open(file, "r")
    for line in f.readlines():
        res = re.findall("`.+'", line)
        if res:
            rm_list.append(*res)
    return rm_list


def rm(rm_list):
    rm_list = [item.lstrip("`").rstrip("'") for item in rm_list]
    for item in rm_list:
        print("rm: ", item)
        os.system("rm %s" % item)


if __name__ == "__main__":
    main() 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libpng warning iCCP 错误处理方法 的相关文章

  • 如何更改默认的Python版本?

    我已经在我的 Mac 上安装了 Python 3 2 我跑完之后 Applications Python 3 2 Update Shell Profile command 当我输入时 这很令人困惑Python V在终端它说Python 2
  • Keras ZeroDivisionError:整数除法或以零为模

    我正在尝试使用 Keras 和 Tensorflow 实现卷积神经网络 我有以下代码 from keras models import Sequential from keras layers import Conv2D MaxPoolin
  • 在推送到容器注册表之前如何对构建的映像运行测试?

    从 gitlab 文档中可以看出如何使用 kaniko 创建 docker 镜像 build stage build image name gcr io kaniko project executor debug entrypoint sc
  • 高效地将大型 Pandas 数据帧写入磁盘

    我正在尝试找到使用 Python Pandas 高效地将大型数据帧 250MB 写入磁盘或从磁盘写入的最佳方法 我已经尝试了所有方法Python 数据分析 但表现却非常令人失望 这是一个更大项目的一部分 该项目探索将我们当前的分析 数据管理
  • Python设置1和True的解释

    在 IPython 3 交互式 shell 中 In 53 set2 1 2 True hello In 54 len set2 Out 54 3 In 55 set2 Out 55 hello True 2 是因为 1 和 True 得到
  • 如何检索分配给 Django 中的组的所有权限

    我正在执行一项任务来检索分配给 Django 中的组的一组权限 我可以使用以下代码获取创建的组 但无法使用它来获取分配给它们的权限 from django contrib auth models import Group Permissio
  • 在 Jupyter Notebook 中设置环境变量的不同方法

    在某些情况下 我在 Windows 10 计算机上使用 Jupyter 笔记本 我想通过设置环境变量 GOOGLE APPLICATION CREDENTIALS 来向 GCP 进行身份验证 我想知道 这两种设置环境变量的方式有什么区别 当
  • 计算熊猫数据帧几个月的总和

    我有一个 pandas 数据框 如下所示 ID Year R1 R1 f KAR1 20201001 1 5 KAR1 20201101 2 6 KAR1 20201201 3 7 KAR1 20210101 4 8 KAR1 202102
  • 检查子字符串是否在字符串列表中?

    我之前已经找到了这个问题的一些答案 但它们对于当前的Python版本来说似乎已经过时了 或者至少它们对我不起作用 我想检查字符串列表中是否包含子字符串 我只需要布尔结果 我找到了这个解决方案 word to check or wordlis
  • 如何将脚本作为 pytest 测试运行

    假设我有一个用简单脚本表示的测试assert 陈述 请参阅背景了解原因 例如 import foo assert foo 3 4 我如何以一种好的方式将该脚本包含在我的 pytest 测试套件中 我尝试了两种有效但不太好的方法 一种方法是将
  • 如何将 numpy rearray 的子集转换为连续数组?

    我有一个recarray来自读取 csv 文件 我有兴趣将列的子集转换为连续浮点数组 我想避免将它们转换为列表或将它们一一堆叠 我尝试了中的建议https stackoverflow com a 11792956 https stackov
  • 如何调试 numpy 掩码

    这个问题与this one https stackoverflow com q 73672739 11004423 我有一个正在尝试矢量化的函数 这是原来的函数 def aspect good angle float planet1 goo
  • Pandas如何按时间段过滤DataFrame

    我有一个包含下表的文件 Name AvailableDate totalRemaining 0 X3321 2018 03 14 13 00 00 200 1 X3321 2018 03 14 14 00 00 200 2 X3321 20
  • 打印一份拥有多个家庭的人员名单,每个家庭都有多个电话号码

    我有一类 Person 它可以有多个 Home 每个 Home 都有一个或多个电话号码 我已经定义了类 但现在我正在尝试创建一个视图 其中列出每个人的所有家庭以及每个家庭地址的所有电话号码 类似于 john smith 123 fake s
  • 如何在 Python 中跟踪日志文件?

    我想在 Python 中提供 tail F 或类似内容的输出 而无需阻塞或锁定 我找到了一些非常旧的代码来做到这一点here http code activestate com recipes 436477 filetailpy 但我认为现
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 在 anaconda 环境下运行 qsub

    我有一个程序 通常在 Linux 的 conda 环境中运行 因为我用它来管理我的库 指令如下 source activate my environment python hello world py 我怎样才能跑你好世界 py在与 PBS
  • 旧版本的 spaCy 在尝试安装模型时抛出“KeyError: 'package'”错误

    我在 Ubuntu 14 04 4 LTS x64 上使用 spaCy 1 6 0 和 python3 5 为了安装 spaCy 的英文版本 我尝试运行 这给了我错误消息 ubun ner 3 NeuroNER master src pyt
  • 如何在 Qt 中以编程方式制作一条水平线

    我想弄清楚如何在 Qt 中制作一条水平线 这很容易在设计器中创建 但我想以编程方式创建一个 我已经做了一些谷歌搜索并查看了 ui 文件中的 xml 但无法弄清楚任何内容 ui 文件中的 xml 如下所示
  • 用 Beautiful Soup 进行抓取:为什么 get_text 方法不返回该元素的文本?

    最近我一直在用 python 开发一个项目 其中涉及抓取一些网站的一些代理 我遇到的问题是 当我尝试抓取某个知名代理站点时 当我要求 Beautiful Soup 查找 IP 在代理表中的位置时 它并没有按照我的预期执行操作 我将尝试查找每

随机推荐

  • java 二进制变量_java变量、二进制、数据类型、原码、补码、反码

    1 变量 1 他 她 我 你 某人 佚名 旺财 X man x 1 您好 它 变量就是自然语言中的代词 2 int age 15 00000000 00000000 00000000 00001111 3 Java 中的变量 a Java是
  • IntelliJ IDEA 2020.3 重大特性

    今天发现 idea 2020 3 版本发布了 那么废话不多说 赶紧更新起来 ps 继续推荐使用 toolbox 进行安装 首先欢迎页变化 1 管理项目 2 配置 IDE 界面 主要就是主题 字体 快捷键等设置 3 插件 已经安装的插件和插件
  • 2023.8.21--微信小程序uni-app

    微信小程序 day1 微信小程序开发 下载微信开发者工具 注册小程序账号 注册小程序账号 填写信息 获取小程序的 AppID 搭建开发环境 认识小程序 小程序的页面布局 小程序组件 标签 view 定义块级区块 相当于 html 中的 di
  • es基础操作

    列出所有索引 列出所有索引 列出所有的数据库 GET cat indices v 添加索引 PUT goods settings 副本数 number of replicas 1 分片数 number of shards 5 删除索引 DE
  • verilog中的操作符

    verilog中的操作运算符如下 1 算数操作符 2 关系操作符 3 相等操作符 4 逻辑操作符 5 按位操作符 6 归约操作符 7 移位操作符 8 条件操作符 9 连接操作符 10 赋值操作符 下面做详细介绍 1 算数操作符 加 减 乘
  • vue3+vite 全局组件注册与使用

    前言 vite和我们的webpack是不同的 这里没办法用require 但是他也有自己的引入文件的方法 是 import meta glob 实现效果 vite方法官方入口 功能 Vite 官方中文文档下一代前端工具链https cn v
  • 张五常的《读书方法》

    首先声明 我要谈的是为知识而读书的方法 不是为考试而读书的方法 后者 香港的学生都是专家 猜题目 背课文之能 世间少有 但为知识而读书可以帮助考试 为考试而读书却未必可助知识的增长 知识是读书的目的 An End 考试只是一个方法 A Me
  • react antd里面的Popover属性content怎么循环写内容,代码展示

    可以使用Antd中的Popover组件 来循环渲染内容 例如 const list name 张三 age 18 name 李四 age 21 return
  • 动画状态机Animator-Unity3d

    该模型一直处于奔跑状态 点击跳跃则跳跃一次后回到奔跑状态 点击攻击后则攻击一次回到奔跑状态 控制代码如下 using UnityEngine using System Collections 该人物一直处于奔跑状态 点击跳跃则跳跃一次后回到
  • 前端工具集合(js框架、ui框架、开发工具...)

    vue3 vue3官网 Vue js pc端开发ui框架 element plus 一个 Vue 3 UI 框架 Element Plus 移动端ui框架 vant Vant Mobile UI Components built on Vu
  • [Unity3D]场景间切换与数据传递(以及物体删除技巧)

    Unity3D 场景间切换与数据传递 以及物体删除技巧 2009 09 16 15 03 47 分类 Unity3D 举报 字号 订阅 先介绍一些基本函数 具体用法自己查文档 1 场景切换 Application LoadLevel Lev
  • node.js基础学习

    什么是node 简单来说 node是JS的一种运行环境 在此之前 我们都知道JS可以在浏览器中运行 可以为网页添加各种交互 因此 浏览器也是JS的运行环境 随着Chrome浏览器的发布 带来了全新的V8引擎 经过多年的发展和优化 性能和安全
  • python数据分析--缺失值的填充与删除

    数据来源 和鲸社区 Numpy Pandas数据处理 第五关 主要内容 查看是否有缺失值 填充缺失值fillna 删除缺失值 导入数据 import pandas as pd filepath10 home mw input Pandas
  • 计算机网络安全影响因素毕业论文,计算机网络安全分析与防范措施--毕业论文.doc...

    计算机网络安全分析与防范措施 毕业论文 doc 中央广播电视大学 毕业设计 论文 题 目 计算机网络安全防范措施 2 目 录 3 引 言 4 第一章 计算机网络简介 5 一 数字语音多媒体三网合一 5 二 IPv6协议 5 第二章 计算机网
  • 看完这篇 教你玩转渗透测试靶机vulnhub——BossplayersCTF

    Vulnhub靶机BBossplayersCTF渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 命令执行漏洞 反弹shell suid提权 获取flag Vulnh
  • Java 多线程怎么做事务控制

    前言 公司业务中遇到一个需求 需要同时修改最多约5万条数据 而且还不支持批量或异步修改操作 于是只能写个for循环操作 但操作耗时太长 只能一步一步寻找其他解决方案 具体操作如下 一 循环操作的代码 先写一个最简单的for循环代码 看看耗时
  • c++&qt day2

    封装一个结构体 结构体中包含一个私有数组 用来存放学生的成绩 包含一个私有变量 用来记录学生个数 提供一个公有成员函数 void setNum int num 用于设置学生个数 提供一个公有成员函数 void input 用来对所有学生的成
  • Vue3项目-配置路由及侧边栏导航栏

    在Vue3项目中配置路由和侧边栏导航栏可以按照以下步骤进行 配置流程 1 安装Vue Router 首先 确保你的Vue3项目已经安装了Vue Router 如果没有安装 可以在项目根目录下执行以下命令进行安装 npm install vu
  • 学长的电赛学习经历,文字记录【3800字】【学长】

    文章目录 前言 开始 采购 学习 暑假 赛前 比赛 测评 建议 感谢和希望 前言 我的电赛学习经历 2017年我和我的同学们有幸参加了全国电子设计大赛 这次比赛经历注定永生难忘 可以说这次比赛是大学里面印象最深的一次经历也是四年的学习中最刻
  • libpng warning iCCP 错误处理方法

    png图片缺乏某些库 导致损坏 或者多余了一些数据会导致以下报错 libpng warning iCCP known incorrect sRGB profile libpng warning iccp extra compressed d