问题描述

png图像有的可能包含透明通道,包含透明通道的png格式图像转换成jpg格式图像时,会出现异常的颜色值。非通过直接修改扩展名的方法,读取后又保存的。直接通过修改扩展名的方法读取保存后没有异常,但是本质没改变。



对应图像属性

解决方法

img_path = '/special_data'
out_path = '/special_data_jpg'for img_name in os.listdir(img_path):img = Image.open(os.path.join(img_path, img_name))print(img_name, img.mode)img_name_base, img_name_ext = os.path.splitext(img_name)if img_name_ext in ['.png', '.PNG']:if img.mode == 'RGBA':img_arr = np.array(img)img_white = np.ones((img_arr.shape[0], img_arr.shape[1], 3), np.uint8) * 255alpha = img_arr[:, :, 3]alpha = alpha[:, :, np.newaxis] / 255.img_out = img_arr[:, :, :3] * alpha + img_white * (1 - alpha)img_out = np.clip(img_out, 0, 255)img_out = img_out.astype(np.uint8)save_img = Image.fromarray(img_out)elif img.mode == 'P':img = img.convert('RGBA')img_arr = np.array(img)img_white = np.ones((img_arr.shape[0], img_arr.shape[1], 3), np.uint8) * 255alpha = img_arr[:, :, 3]alpha = alpha[:, :, np.newaxis] / 255.img_out = img_arr[:, :, :3] * alpha + img_white * (1 - alpha)img_out = np.clip(img_out, 0, 255)img_out = img_out.astype(np.uint8)save_img = Image.fromarray(img_out)else:if img.mode in ['1', 'L']:save_img = img.convert('RGB')elif img.mode == 'CMYK':img = ImageCms.profileToProfile(img, 'USWebCoatedSWOP.icc', 'sRGB Color Space Profile.icm',renderingIntent=0, outputMode='RGB')save_img = imgelse:save_img = imgoutput_img_name = os.path.splitext(img_name)[0] + '.jpg'print(save_img.mode)save_img.save(os.path.join(out_path, output_img_name))

png格式图像转成jpg图像时出现异常颜色值相关推荐

  1. OpenCV | OpenCV将图像转换成黑白图像(二进制)

    将图像转换为黑白涉及两个步骤. 将源图像读取为灰度图像. 使用您选择的阈值将灰度图像转换为二进制图像. 如果源图像是灰度图像,则可以将步骤1中的图像读取为原始图像,然后继续步骤2.以下示例说明了从灰度 ...

  2. Python扩展库scipy.misc中图像转换成pillow图像

    众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些基准图像做实验,比较常见的应该就是len ...

  3. RGB图像转换成YCbCr图像,rgb2ycbcr的使用,转换参数

    原理 YCbCr到RGB的转换 Y' = 0.257*R' + 0.504*G' + 0.098*B' + 16Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128C ...

  4. RGB图像转换成HSV图像,HSV图像转换为RGB图像

    HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...

  5. rgb转hsv java_RGB图像转换成HSV图像

    HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...

  6. python 读取jpg_Python OpenCV读取png图像转成jpg图像存储的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. python图片转文字easyocr_Python OpenCV读取png图像转成jpg图像存储

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. Windows Forms:在C#中将图像转换成灰度图

    Windows Forms:在C#中将图像转换成灰度图 本文翻译自Windows Forms: Convert an image into grayscale in C# 这篇文章向你展示在C# Wi ...

  9. Python 如何把图像转换成video (avi)格式?

    Python 如何把图像转换成video (avi)格式? import cv2 def image_to_video(image_dir, save_dir, size: tuple, fps=10 ...

  10. 将.mat格式的高光谱图像转换成png或jpg格式

    将.mat格式的高光谱图像转换成png或jpg格式 使用MATLAB打开.mat文件,并读取高光谱图像数据. 如果高光谱图像数据为三维矩阵,将其转置为(宽度,高度,波段数)的形式.这是因为MATLAB ...

最新文章

  1. opencv求两张图像光流_OpenCV单应性矩阵发现参数估算方法详解
  2. STL 中的链表排序
  3. PHP套入表格公式,单元格公式引用的方法
  4. ccna第十一课 ACL访问控制列表
  5. 根据需求增加或删除表格行
  6. 《IPv6安全》——2.3 IPv6网络勘察
  7. Win7下如何显示文件的扩展名?
  8. 源代码管理工具 (git,CVS,SVN,Clearcase,VSS)
  9. 北理工珠海学院计算机分数线,北京理工大学珠海学院
  10. 服务器 python cant open file_QQ炫舞转服系统-QQ炫舞官方网站-腾讯游戏
  11. linux 卸载你pip,ubuntu python pip无法卸载pi
  12. 分布形态的度量-偏度系数与峰度系数的探讨
  13. hive 安装mysql报错_hive的元数据存储在mysql后,报错的解决方法
  14. 办公实用技巧:利用迅捷画图绘制网络拓扑图操作方法介绍
  15. Xmanager远程桌面linux,Windows下通过Xmanager远程桌面控制Linux
  16. RBP as a streaming server(一)
  17. 2021-CVPR-图像修复论文导读《TransFill: Reference-guided Image Inpainting by Merging Multiple Color and ~~~》
  18. 西方经济学微观部分中的英文字母缩写
  19. 【Spring系列04】自动装配(Qualifier,Autowired,Resource讲解)
  20. 渗透测试-burp suite实战

热门文章

  1. xui和嘟嘟桌面哪个好_小米国际版桌面,这是我用过最流畅的手机桌面
  2. 技能 | 制作excel版学生成绩分析表
  3. games101 材质与外观
  4. 元素周期表排列的规律_元素周期表中的几个规律
  5. c语言check,C语言的CHECK-LIST
  6. Mac OS 打开 NTFS 读写功能
  7. log4j日志配置(超详细)
  8. 深入理解socket中的recv函数和send函数
  9. 2000坐标系xy坐标几位_2000坐标系(2000坐标系x和y坐标几位数)
  10. 批量给多个 Excel 工作簿文件添加文字水印或图片水印