PIL PNG格式通道问题的解决方法
近来研究图片的剪切拼接,用到PIL,在打开PNG格式保存为JPEG格式的图片发现报错:
import os
from PIL import Image im = Image.open(r'E:\work\testcrop\test\hn1.png')
img_size = im.size
w = img_size[0] / 2.0
h = img_size[1]
x = 0
y = 0
print("图片宽度和高度分别是{}".format(img_size))
region = im.crop((x, y, x + w, y + h))
a = "1.jpeg"
region.save(a)
报错:
raise IOError("cannot write mode %s as JPEG" % im.mode)
OSError: cannot write mode RGBA as JPEG
查资料发现是PNG有RGBA四个通道,而JPEG是RGB三个通道,所以PNG转BMP时候程序不知道A通道怎么办,就会产生错误。
解决方法就是检查通道数,舍弃A通道。
import os
from PIL import Image
path = r'E:\work\testcrop\test\hn2.png'
if 'png' in path[-4:]:
im = Image.open(path)
r, g, b, a = im.split()
im = Image.merge("RGB", (r, g, b))
os.remove(path)
im.save(path[:-4] + ".jpeg")
path = path[:-4] + ".jpeg"
im = Image.open(path)
img_size = im.size
w = img_size[0] / 2.0
h = img_size[1]
x = 0
y = 0
print("图片宽度和高度分别是{}".format(img_size))
region = im.crop((x, y, x + w, y + h))
a = "2.jpeg"
region.save(a)
至此解决。
参考:http://blog.csdn.net/smallflyingpig/article/details/56036771
PIL PNG格式通道问题的解决方法的更多相关文章
- 请求被中止: 未能创建 SSL/TLS 安全通道,以及解决方法,即:Could not create SSL/TLS secure channel
C# 访问https请求被中止: 未能创建 SSL/TLS 安全通道(Could not create SSL/TLS secure channel) 以及 X509Certificate2 temp ...
- 说说 JSON 格式的弊端与解决方法
JSON 格式是目前最流行的数据交互格式,广泛应用于前后端分离的系统.但也有一些场合不适合使用 JSON 格式. 1 JSON 格式弊端 有这样的一个需求:希望把客户端的日志上传到服务器存储起来.原先 ...
- 用视频编辑软件打不开jpg格式的图片的解决方法
有时候我们把PSD.JPG等图片导入到素材库中会发现EDIUS视频编辑软件根本就不支持,显示黑屏状态.可是当我们把图片导入EDIUS NX支持下的premierepro里却能够正常显示.这是什么原因呢 ...
- Ubuntu---不能打开 exfat 文件系统格式的 U盘解决方法
出现问题:今天把 U 盘插入 Ubuntu 系统的电脑中,打开 U 盘发现弹出 系统格式不支持 的提醒,无法进入 U 盘进行操作. 环境: Ubuntu18.04 TSL; 格式化为 exfat 文件 ...
- WebService "因 URL 意外地以 结束,请求格式无法识别" 的解决方法
最近在做一个图片上传的功能,js调用用webservice进行异步访问服务器,对于不是经常用webservice的菜鸟来说,经常会遇到以下的问题(起码我是遇到了) 在页面上写了js调用代码如下所示: ...
- .asmx支持post请求或者get请求调用(WebService "因 URL 意外地以 结束,请求格式无法识别" 的解决方法)
使用Post调用以asmx形式提供的webservice时,在本机调试没有调用问题.一旦部署至服务器后会提示如下信息: <html> <head> <title>因 ...
- 【Vegas原创】Excel中,日期和时间用&连接后格式不正确的解决方法
=TEXT(B2+C2,"yyyy-mm-dd hh:mm:ss")
- keras中无法下载 https://s3.amazonaws.com/img-datasets/mnist.npz 解决方法
网址:https://s3.amazonaws.com/img-datasets/mnist.npz,由于显而易见的原因,无法访问. npz实际上是numpy提供的数组存储方式,简单的可看做是一系列n ...
- 解决json日期格式问题的3种方法
这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...
随机推荐
- 把Oracle由归档模式改为非归档模式
把Oracle由归档模式改为非归档模式 开始–>运行命令cmd进入命令行模式 1. 使用命令sqlplus以无日志形式打开如下: sqlplus /nolog; 2. 连接数据库dev.worl ...
- Lucene入门学习
技术原理: 开发环境: lucene包:分词包,核心包,高亮显示(highlight和memory),查询包.(下载请到官网去查看,如若下载其他版本,请看我的上篇文档,在luke里面) 原文文档: 入 ...
- map里面的set方法
let a=[1,2,3,4,1,2,3,4,1,4];let b= new Set(a);console.log(b) 还有add方法介绍下: let a=new Set();let b=[1,1, ...
- linux考试题改错
符号链接和硬链接有什么区别? 改:符号链接存储文件路径,可以指向不同分区文件,源文件删除后失效. 改:硬链接指向文件索引节点,仅能指向同一分区文件,源文件删除后可以访问. 请描述文件和目录9位权限位的 ...
- .NET Core开发日志——OData
简述 OData,即Open Data Protocol,是由微软在2007年推出的一款开放协议,旨在通过简单.标准的方式创建和使用查询式及交互式RESTful API. 类库 在.NET Core中 ...
- Codeforces 607A - Chain Reaction - [DP+二分]
题目链接:https://codeforces.com/problemset/problem/607/A 题意: 有 $n$ 个塔排成一行,第 $i$ 个激光塔的位置为 $a_i$,伤害范围是 $b_ ...
- angularjs实例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- 苏宁基于Spark Streaming的实时日志分析系统实践 Spark Streaming 在数据平台日志解析功能的应用
https://mp.weixin.qq.com/s/KPTM02-ICt72_7ZdRZIHBA 苏宁基于Spark Streaming的实时日志分析系统实践 原创: AI+落地实践 AI前线 20 ...
- 审核被拒:1. 1 Safety: Objectionable Content ;3. 1.1 Business: Payments - In-App Purchase ;4. 3 Design: Spam ;5. 1.1 Legal: Privacy - Data Collection and Storage
1. 1 Safety: Objectionable Content 有人民币符号—隐藏收费课程 3. 1.1 Business: Payments ...
- linux 下的clock_gettime() 获取时间函数
#include <time.h> int clock_gettime(clockid_t clk_id, struct timespec* tp); 可以根据需要,获取不同要求的精确时间 ...