PIL ValueError:图像数据不足?

2024-03-02

当我尝试从 URL 获取图像并将其响应中的字符串转换为Image在 App Engine 内。

from google.appengine.api import urlfetch

def fetch_img(url):
  try:
    result = urlfetch.fetch(url=url)
    if result.status_code == 200:
      return result.content
  except Exception, e:
    logging.error(e)

url = "http://maps.googleapis.com/maps/api/staticmap?center=Narita+International+Airport,Narita,Chiba+Prefecture,+Japan&zoom=18&size=512x512&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false"

img = fetch_img(url)
# As the URL above tells, its size is 512x512 
img = Image.fromstring('RGBA', (512, 512), img)

根据PIL http://www.pythonware.com/library/pil/handbook/image.htm#image-size-attribute,大小选项应该是像素元组。这是我指定的。有人能指出我的误解吗?


图像返回的数据是图像本身,而不是 RAW RGB 数据,因此您不需要将其作为原始数据加载,而是只需将该数据保存到文件中,它将是一个有效的图像,或者使用 PIL 打开它,例如(我已将您的代码转换为不使用 appengine api,以便任何具有正常 python 安装的人都可以运行 xample)

from urllib2 import urlopen
import Image
import sys
import StringIO

url = "http://maps.googleapis.com/maps/api/staticmap?center=Narita+International+Airport,Narita,Chiba+Prefecture,+Japan&zoom=18&size=512x512&maptype=roadmap&markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318&markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false"
result = urlopen(url=url)
if result.getcode() != 200:
  print "errrrrr"
  sys.exit(1)

imgdata = result.read()
# As the URL above tells, its size is 512x512 
img = Image.open(StringIO.StringIO(imgdata))
print img.size

output:

(512, 512)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PIL ValueError:图像数据不足? 的相关文章

随机推荐

  • React-Google-Map 多个信息窗口打开

    我目前正在使用react google maps构建一个谷歌地图API 我想创建多个标记来在信息窗口上显示世界各地城市的信息 但由于它们都是来自 html 对象 每当我单击一个标记时 所有信息窗口都会打开 如果有办法解决这个问题吗 示例代码
  • Capybara 使用正则表达式匹配元素 id

    我正在使用Cocoon https github com nathanvda cocoongem 在 Rails 中构建嵌套表单 该 gem 为每个重复的表单元素分配一个随机数 以便区分它们 例如 id challenge events a
  • 查找批处理文件中文件的修改日期是否早于 N 小时,如果不是则发送电子邮件

    我认为这篇文章正是我正在寻找的 在批处理文件中查找文件是否早于 4 小时 https stackoverflow com questions 6928552 find out if file is older than 4 hours in
  • Android 上的 Java 对象在内存中是如何布局的?

    我对 HotSpot 中堆上对象的布局相当熟悉 但对 Android 不太熟悉 例如 在 32 位 HotSpot JVM 中 堆上的对象被实现为 8 字节标头 后面是对象的字段 一个字节表示boolean 四个字节用于引用 其他所有内容均
  • 在单独的线程上分派托管 Win32 WndProc

    我正在通过非托管创建一个窗口CreateWindowEx使用 PInvoke 作为服务器来进行调度SendMessage来自不同进程的调用 这应该包裹在一个同步函数 类注册 窗口创建 像这样 public bool Start if Run
  • 创建连接文件的最佳实践

    我有一个应用程序 其中有一些缓存 队列和数据库的配置文件 public class ServerConfiguration ConfigurationSection ConfigurationProperty FOO DefaultValu
  • 使用 State 和 IO 的堆叠 monad 时,在流程中停止理解

    在这个 Scala 示例中 当结果为以下时我需要停止StopNow 我需要在打电话后执行此操作decisionStep 我怎样才能做到这一点 case class BusinessState trait BusinessResult cas
  • 比较文件名

    我想比较两个不同文件夹中的文件 我只想比较这两个不同文件夹中具有相同名称的文件 我想做的是比较一个软件的两个不同版本并找出有多少文件被更改 这将帮助您获取两个路径的文件 import java io File import java uti
  • 为什么 python webassets pyscss 不能在调试模式下从 scss 文件重新生成 css?

    我在 python webassets 库中使用 pyscss 编译器 并将 webassets 调试配置全部设置为 true 但是 当我对 scss 文件进行更改并重新加载包含生成的 css 文件的页面时 我发现 css 文件尚未重新生成
  • int main() { } (不带“void”)在 ISO C 中有效且可移植吗?

    C 标准指定了两种形式的定义main为一个 托管实施 int main void and int main int argc char argv 它可以以与上述 等效 的方式定义 对于 例如 您可以更改参数名称 替换int通过 typede
  • 查询客户交易数据

    我正在构建一个类似于个人理财的应用程序 为此 我需要获取有关该客户交易的信息 我设法运行了获取基本个人数据 https developer paypal com docs classic permissions service integr
  • 带中缀表示法的点自由样式

    您好 有没有办法在使用中缀表示法时编写点自由样式 f Int gt Int gt Int gt Int f a b a b 为什么你不能做这样的事情 f Int gt Int gt Int gt Int f a b a b or f a b
  • 使用 control.begininvoke 后 UI 仍然没有响应

    我制作了一个 C winforms 应用程序 现在我有一个带有很多按钮的表单 这些按钮调用大量的数字运算函数 其输出在文本框中更新 我调用 textbox begininvoke 方法 将委托传递给更新文本框中文本的函数 但是当文本很大时
  • 无法在单用户模式下启动sql server

    我正在尝试恢复我的本地 sql server sa 密码 我读到应该将其置于单用户模式 我就这样做了 我添加了 m 到启动参数 我没有运行 sql 代理 我重新启动了 Sql Server 当我尝试时 sqlmd S sqlexpress
  • Ruby on Rails 中的模型关系

    我正在 Rails 3 中开发一个新应用程序 但我不确定如何建立模型之间的关系 基本上我有一个model User and a model Project 用户可以创建项目 成为项目所有者 但除项目所有者之外的任何其他用户也可以加入该项目
  • 如何检查数组中的非零值(元素)

    我想知道如何编写一个函数来返回是否至少有三个值不等于 0 我搜索过类似的问题 但找不到任何有效的解决方案 为了解释我的问题 这里有一个例子 我有一个包含这些元素的数组 1 0 2 0 4 0 0 3 0 0 我想检查是否至少有 3 个元素不
  • file.read()、file.readline() 和迭代文件对象之间的区别[重复]

    这个问题在这里已经有答案了 我是计算机科学的新手 正在尝试在 python 中创建一个函数来打开我的计算机上的文件 我知道这个函数f readline 将当前行作为字符串抓取 但是这些函数的作用是什么f read and for line
  • Python - 将日期的字符串表示形式转换为 ISO 8601

    在Python中 如何转换这样的字符串 2010 年 12 月 16 日星期四 12 14 05 0000 为 ISO 8601 格式 同时保留时区 请注意 原始日期是字符串 输出也应该是字符串 而不是datetime或类似的东西 不过 我
  • 将 abel 包裹在复合材料中

    I have ScrolledComposite只允许垂直滚动 heighthint 400 在这个 ScrolledComposite 中 我还有另一个CompositeA 滚动高度可能超过 400 来存储所有其他小部件 我有一个很长的标
  • PIL ValueError:图像数据不足?

    当我尝试从 URL 获取图像并将其响应中的字符串转换为Image在 App Engine 内 from google appengine api import urlfetch def fetch img url try result ur