利用python转换图片格式

前言

常见的图像任务通常需要把照片统一成相同的格式,所以此文章正是为了统一格式而生,常见的主要有cv2和PIL.Image的相关操作,照片格式是一串数字加上后缀名

工具一:cv2

pip install opencv-python

之后就可以

import cv2

1.1 导包

import osimport cv2import sysimport numpy as np

1.2 路径设置

path = r"C:\\Users\\86775\\test_change\\"
path2 = r"C:\\Users\\86775\\test_change2\\"

1.3 改格式重新传

1.3.1 用os.path.splitext()来判断

images = os.listdir(path)
for i in os.listdir(path):print(os.path.splitext(i))  # ('34474006827920603', '.png')if os.path.splitext(i)[1] == ".jpeg":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".jpeg", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif os.path.splitext(i)[1] == ".png":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".png", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif os.path.splitext(i)[1] == ".JPG":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".JPG", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif os.path.splitext(i)[1] == ".PNG":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".PNG", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif os.path.splitext(i)[1] == ".jpg":img = cv2.imread(path + i)# print(img)cv2.imwrite(path2 + i, img)

1.3.2 用split()来判断

images = os.listdir(path)
for i in os.listdir(path):print(i.split("."))if i.split(".")[1] == "jpeg":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".jpeg", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif i.split(".")[1] == "png":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".png", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif i.split(".")[1] == "JPG":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".JPG", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif i.split(".")[1] == "PNG":img = cv2.imread(path + i)# print(img)new_imagename = i.replace(".PNG", ".jpg")cv2.imwrite(path2 + new_imagename, img)elif i.split(".")[1] == "jpg":img = cv2.imread(path + i)# print(img)cv2.imwrite(path2 + i, img)

1.4 查看结果

 

工具二:pillow

pip install pillow

之后就可以

from PIL import Image

2.1 导包

import osfrom PIL import Image

2.2 路径设置

path = r"C:\\Users\\86775\\test_change\\"
path2 = r"C:\\Users\\86775\\test_change2\\"

2.3 写格式修改函数

RGBA意思是红色,绿色,蓝色,Alpha的色彩空间,Alpha指透明度,而JPG不支持透明度。
所以其他格式不转jpg可以直接保存为.png格式,转jpg就需要丢弃Alpha
img = img.convert(“RGB”),转换成RGB,保证和jpg格式的通道数相同,也算一种图片类型变换的防报错机制

def jpeg2jpg(path_in, path_out):img = Image.open(path_in)img = img.convert("RGB")img.save(path_out, "JPEG", quality=80, optimize=True, progressive=True)def png2jpg(path_in, path_out):img = Image.open(path_in)img = img.convert("RGB")img.save(path_out, "JPEG", quality=80, optimize=True, progressive=True)def JPG2jpg(path_in, path_out):img = Image.open(path_in)img = img.convert("RGB")img.save(path_out, "JPEG", quality=80, optimize=True, progressive=True)def PNG2jpg(path_in, path_out):img = Image.open(path_in)img = img.convert("RGB")img.save(path_out, "JPEG", quality=80, optimize=True, progressive=True)def jpg2jpg(path_in, path_out):img = Image.open(path_in)img = img.convert("RGB")img.save(path_out, "JPEG", quality=80, optimize=True, progressive=True)

2.4 开始转换

images = os.listdir(path1)
for i in images:print(i)if os.path.splitext(i)[1] == ".jpeg":source = path1 + "\\" + str(i.split(".")[0]) + ".jpeg"target = path2 + "\\" + str(i.split(".")[0]) + ".jpg"jpeg2jpg(source, target)elif os.path.splitext(i)[1] == ".png":source = path1 + "\\" + str(i.split(".")[0]) + ".png"target = path2 + "\\" + str(i.split(".")[0]) + ".jpg"png2jpg(source, target)elif os.path.splitext(i)[1] == ".JPG":source = path1 + "\\" + str(i.split(".")[0]) + ".JPG"target = path2 + "\\" + str(i.split(".")[0]) + ".jpg"JPG2jpg(source, target)elif os.path.splitext(i)[1] == ".PNG":source = path1 + "\\" + str(i.split(".")[0]) + ".PNG"target = path2 + "\\" + str(i.split(".")[0]) + ".jpg"PNG2jpg(source, target)elif os.path.splitext(i)[1] == ".jpg":source = path1 + "\\" + str(i.split(".")[0]) + ".jpg"target = path2 + "\\" + str(i.split(".")[0]) + ".jpg"jpg2jpg(source, target)

2.5 查看结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 6.0语法新特性体验(二)

之前我在文章通过Roslyn体验C# 6.0的新语法中介绍了一些C# 6.0的语法特性,现在随着Visual Studio 14 CTP3的发布,又陆续可以体验一些新的特性了,这里简单的介绍一下之前没有介绍的新语法。 属性表达式(Property Expressions&#…

TensorFlow 2.0 - 张量/自动求导/梯度下降

文章目录1. 张量2. 自动求导、梯度下降学习于:简单粗暴 TensorFlow 2 1. 张量 import tensorflow as tf print(tf.__version__) # 2.3.1random_float tf.random.uniform(shape()) # tf.Tensor(0.80420315, shape(), dtypefloat32) zero_vec tf.zeros(shape(2)) …

苹果台式机_苹果史上最强台式机来了:顶配售价45万

12月11日消息,国行版Mac Pro正式在苹果官网上架开售。根据苹果官网显示,Mac Pro最基础版本需要花费47999元,基础版Mac Pro配置上采用3.5GHz 8核Intel Xeon W处理器,32GB (4x8GB) DDR4 ECC内存,Radeon Pro 580X图形处理…

Python多进程及多参数的处理方法

一、多进程pool.map()方法一 import time from multiprocessing.pool import Pooldef numsCheng(i):return i * 2if __name__ __main__:time1 time.time()nums_list [1, 2, 3, 4, 5, 6, 7, 8, 9]pool Pool(processes5)result pool.map(numsCheng, nums_list)pool.close()…

【floyd】HDU 1874 畅通project续

之后的题解偏重有用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也能够放放。 非常久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话能够分为下面几种。 1、单源最短路:已知起…

利用python寻找列表中相邻元素之差绝对值为1的所有最长链

一、前言: 今天工作遇到一个问题,根据不同的柜子选取能连接在一起的所有柜子,有可能一组,也有可能几组;把这个问题简单化,就是给你一组列表[2, 1, 3, 4, 5, 7, 9, 8, 12, 13, 14, 15],得到相邻…

LeetCode 1489. 找到最小生成树里的关键边和伪关键边(并查集+kruskal最小生成树)

文章目录1. 题目2. 解题1. 题目 给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] [fromi, toi, weighti] 表示在 fromi 和 toi 节点之间有一条带权无向边。 最小生成树 (MST) 是给定图中边的…

斯特林发动机图纸尺寸_南昌教学模型订做,航空发动机模型_境海模型

首页 > 新闻中心发布时间:2020-11-08 13:57:07 导读:境海模型为您提供南昌教学模型订做,航空发动机模型的相关知识与详情: 曾经的沙盘模型一般只有模型自身,没有现代的视觉作用例如:灯火声音形象等动态的作用。景观…

C# 关于列表List<T>排序总结与整理

一、概述 SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。 如果您使用索引访问各项,则它是一个动态数组(ArrayList&#xff0…

iOS给图片打水印,并将打过水印的图片生成到沙盒中

- (void)WaterImage{ UIImage *bgImage [UIImage imageNamed:"scene"]; // 上下文 : 基于位图(bitmap) , 所有的东西需要绘制到一张新的图片上去 // 1.创建一个基于位图的上下文(开启一个基于位图的上下文) // size : 新图片的尺寸 // opaq…

app inventor离线版_小鸡漫画app手机版下载_小鸡漫画好看的漫画手机版下载

小鸡漫画app手机版,是一款无限量看漫画的阅读软件。小鸡漫画app手机版为喜欢看漫画的用户带来超多好看、热门、经典的漫画集,在这里看漫画没有乱七八糟和漫画无关的东西打扰。小鸡漫画app手机版方便看漫画,让一个人的你不再孤单,午…

LeetCode 963. 最小面积矩形 II

文章目录1. 题目2. 解题1. 题目 给定在 xy 平面上的一组点,确定由这些点组成的任何矩形的最小面积,其中矩形的边不一定平行于 x 轴和 y 轴。 如果没有任何矩形,就返回 0。 示例 1: 输入:[[1,2],[2,1],[1,0],[0,1]…

C#中判断浮点数double/float是否相等

一、float型与零值比较的语句 if(x < -0.000001 && x > 0.000001) // !0 if(x > -0.000001 && x < 0.000001)// 0 二、float型与float型如何判断相等 浮点数的表示是不精确的&#xff0c;不能直接比较两个数是否完全相等&#xff0c;一般都是在…

树的存储结构(树的二叉链表(孩子—兄弟))

// c6-5.h 树的二叉链表(孩子—兄弟)存储结构(见图6.32) typedef struct CSNode {TElemType data;CSNode *firstchild,*nextsibling; }CSNode,*CSTree; 一棵树无论有多少叉&#xff0c;它最多有一个长子和一个排序恰在其下的兄弟。根据这样的定 义&#xff0c;则每个结点的结构…

C# 二维与三维计算多边形面积的方法

1、二维情况下&#xff0c;计算多边形面积 internal static float GetArea(List<Vector2> points) {float area2 0;for (int numPoint 0; numPoint < points.Count - 1; numPoint){MyPoint point points[numPoint];MyPoint nextPoint points[numPoint 1];area2 …

i12蓝牙耳机使用说明书图片_配置强悍、适用于开车、运动的蓝牙耳机Xisem西圣 Ares使用体验...

现在的蓝牙耳机市场五花八门、有降噪的、有高保真音质的、有适用于运动不掉的… … 真有是各出奇招。那么作为消费者应该如何选择呢&#xff1f;前段时间入手一款硬件配置很高、无论是开车&#xff0c;还是运动都适用的蓝牙耳机“Xisem西圣 Ares真无线蓝牙耳机”。包装简介&…

LeetCode 918. 环形子数组的最大和(前缀和+单调队列)

文章目录1. 题目2. 解题1. 题目 给定一个由整数数组 A 表示的环形数组 C&#xff0c;求 C 的非空子数组的最大可能和。 在此处&#xff0c;环形数组意味着数组的末端将会与开头相连呈环状。 &#xff08;形式上&#xff0c;当0 < i < A.length 时 C[i] A[i]&#xff0…

小案例:王者荣耀战力查询系统(免费调用外部接口

一、查询网址&#xff08;点击&#xff09;&#xff1a; 王者战力查询-王者战力排行榜 二、战力查询接口&#xff1a; 接口调用&#xff1a; https://www.jk.cxkf.cc/api_select.php参数&#xff1a; hero&#xff1a;英雄名字 type&#xff1a;qq、wx、ios_qq、ios_wxqq&…

open函数返回-1_4.6 linux的系统调用执行探究(1)

arm64大约支持280个系统调用&#xff0c;我们平时使用的这些系统调用&#xff0c;到底工作原理是什么&#xff0c;调用后又是到哪里实现的呢&#xff0c;这篇文章初步了解下内核系统调用的流程&#xff0c;并告诉跟踪这个流程的方法。废话不多说&#xff0c;如上就是linux的系统…

LeetCode 781. 森林中的兔子(哈希+贪心)

文章目录1. 题目2. 解题1. 题目 森林中&#xff0c;每个兔子都有颜色。 其中一些兔子&#xff08;可能是全部&#xff09;告诉你还有多少其他的兔子和自己有相同的颜色。 我们将这些回答放在 answers 数组里。 返回森林中兔子的最少数量。 示例: 输入: answers [1, 1, 2] 输…