近来研究图片的剪切拼接,用到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格式通道问题的解决方法的更多相关文章

  1. 请求被中止: 未能创建 SSL/TLS 安全通道,以及解决方法,即:Could not create SSL/TLS secure channel

    C# 访问https请求被中止: 未能创建 SSL/TLS 安全通道(Could not create SSL/TLS secure channel) 以及 X509Certificate2 temp ...

  2. 说说 JSON 格式的弊端与解决方法

    JSON 格式是目前最流行的数据交互格式,广泛应用于前后端分离的系统.但也有一些场合不适合使用 JSON 格式. 1 JSON 格式弊端 有这样的一个需求:希望把客户端的日志上传到服务器存储起来.原先 ...

  3. 用视频编辑软件打不开jpg格式的图片的解决方法

    有时候我们把PSD.JPG等图片导入到素材库中会发现EDIUS视频编辑软件根本就不支持,显示黑屏状态.可是当我们把图片导入EDIUS NX支持下的premierepro里却能够正常显示.这是什么原因呢 ...

  4. Ubuntu---不能打开 exfat 文件系统格式的 U盘解决方法

    出现问题:今天把 U 盘插入 Ubuntu 系统的电脑中,打开 U 盘发现弹出 系统格式不支持 的提醒,无法进入 U 盘进行操作. 环境: Ubuntu18.04 TSL; 格式化为 exfat 文件 ...

  5. WebService "因 URL 意外地以 结束,请求格式无法识别" 的解决方法

    最近在做一个图片上传的功能,js调用用webservice进行异步访问服务器,对于不是经常用webservice的菜鸟来说,经常会遇到以下的问题(起码我是遇到了) 在页面上写了js调用代码如下所示: ...

  6. .asmx支持post请求或者get请求调用(WebService "因 URL 意外地以 结束,请求格式无法识别" 的解决方法)

    使用Post调用以asmx形式提供的webservice时,在本机调试没有调用问题.一旦部署至服务器后会提示如下信息: <html> <head> <title>因 ...

  7. 【Vegas原创】Excel中,日期和时间用&连接后格式不正确的解决方法

    =TEXT(B2+C2,"yyyy-mm-dd hh:mm:ss")

  8. keras中无法下载 https://s3.amazonaws.com/img-datasets/mnist.npz 解决方法

    网址:https://s3.amazonaws.com/img-datasets/mnist.npz,由于显而易见的原因,无法访问. npz实际上是numpy提供的数组存储方式,简单的可看做是一系列n ...

  9. 解决json日期格式问题的3种方法

    这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...

随机推荐

  1. 基于nmap扫描结果的端口爆破工具:BrutesPray

      大家搞内网或者C段渗透测试的时候可能遇到很多时候需要对大批的主机进行精确爆破,这时候BruteSpray就派上用场了. BruteSpray是一款基于nmap扫描输出的gnmap/XML文件.自动 ...

  2. Kafka的安装是否成功的简单测试命令

    首先了解一下kafka的基本概念 .1. BrokerKafka集群包含一个或多个服务器,这种服务器被称为broker2. Topic每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topi ...

  3. layer loading层 的设置

    /* shadeClose 类型:Boolean 默认:true,是否点击遮罩时关闭层 */ var tishi = layer.open({ shadeClose: false ,type: 2 , ...

  4. linux crontab详解 php开发相关

    vi vi /etc/crontab 注意不是这么直接干的! 下面是内容 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root ...

  5. HDU_5528_Count a * b

    Count a * b Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Tot ...

  6. HTTP协议工作原理

    HTTP简介        超文本传输协议(HTTP:Hypertext Transport Protocol)是万维网应用层的协议,它通过两个程序实现:一个是客户端程序(各种浏览器),另一个是服务器 ...

  7. nodejs构建mock数据

    Nodejs构建mock数据并通过rest api风格调用接口访问数据 如果我们只有json格式的数据文件,我们想通过访问url方式调用居然数据 确保电脑安装node环境 如果你没有安装好node环境 ...

  8. 公网k8s

    dm :32750/swagger/ 统一在   cd /opt/iot 删除容器,自动创建容器 dm 更新dm和acl包  dm源文件chart包   cd /var/lib/helmrepo/ h ...

  9. 【JVM】-NO.116.JVM.1 -【JDK11 HashMap详解-5-红黑树】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  10. hibernate重要知识点总结

    一.使用注解方式-----实体和表之间的映射 配置spring的applicationContext.xml文件: <bean id="sessionFactory" cla ...