png格式图像转成jpg图像时出现异常颜色值
问题描述
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图像时出现异常颜色值相关推荐
- OpenCV | OpenCV将图像转换成黑白图像(二进制)
将图像转换为黑白涉及两个步骤. 将源图像读取为灰度图像. 使用您选择的阈值将灰度图像转换为二进制图像. 如果源图像是灰度图像,则可以将步骤1中的图像读取为原始图像,然后继续步骤2.以下示例说明了从灰度 ...
- Python扩展库scipy.misc中图像转换成pillow图像
众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些基准图像做实验,比较常见的应该就是len ...
- 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 ...
- RGB图像转换成HSV图像,HSV图像转换为RGB图像
HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...
- rgb转hsv java_RGB图像转换成HSV图像
HSV 即使用 色相(Hue).饱和度(Saturation).明度(Value) 来表示色彩的一种方式 色相:将颜色用0°到360°表示,就是我们日常讲的颜色名称,如红色.蓝色等. 色相与颜色对应关 ...
- python 读取jpg_Python OpenCV读取png图像转成jpg图像存储的方法
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python图片转文字easyocr_Python OpenCV读取png图像转成jpg图像存储
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- Windows Forms:在C#中将图像转换成灰度图
Windows Forms:在C#中将图像转换成灰度图 本文翻译自Windows Forms: Convert an image into grayscale in C# 这篇文章向你展示在C# Wi ...
- Python 如何把图像转换成video (avi)格式?
Python 如何把图像转换成video (avi)格式? import cv2 def image_to_video(image_dir, save_dir, size: tuple, fps=10 ...
- 将.mat格式的高光谱图像转换成png或jpg格式
将.mat格式的高光谱图像转换成png或jpg格式 使用MATLAB打开.mat文件,并读取高光谱图像数据. 如果高光谱图像数据为三维矩阵,将其转置为(宽度,高度,波段数)的形式.这是因为MATLAB ...
最新文章
- opencv求两张图像光流_OpenCV单应性矩阵发现参数估算方法详解
- STL 中的链表排序
- PHP套入表格公式,单元格公式引用的方法
- ccna第十一课 ACL访问控制列表
- 根据需求增加或删除表格行
- 《IPv6安全》——2.3 IPv6网络勘察
- Win7下如何显示文件的扩展名?
- 源代码管理工具 (git,CVS,SVN,Clearcase,VSS)
- 北理工珠海学院计算机分数线,北京理工大学珠海学院
- 服务器 python cant open file_QQ炫舞转服系统-QQ炫舞官方网站-腾讯游戏
- linux 卸载你pip,ubuntu python pip无法卸载pi
- 分布形态的度量-偏度系数与峰度系数的探讨
- hive 安装mysql报错_hive的元数据存储在mysql后,报错的解决方法
- 办公实用技巧:利用迅捷画图绘制网络拓扑图操作方法介绍
- Xmanager远程桌面linux,Windows下通过Xmanager远程桌面控制Linux
- RBP as a streaming server(一)
- 2021-CVPR-图像修复论文导读《TransFill: Reference-guided Image Inpainting by Merging Multiple Color and ~~~》
- 西方经济学微观部分中的英文字母缩写
- 【Spring系列04】自动装配(Qualifier,Autowired,Resource讲解)
- 渗透测试-burp suite实战