适用于旧版捆绑服务的 Images API

借助 Images API,您可以通过 Google Cloud Storage 或 Blobstore 直接提供图片,还可以即时处理这些图片。如需查看 image 软件包的内容,请参阅 image 软件包参考文档

Cloud Storage 存储桶必须使用精细的访问控制列表,以确保 Images API 正常工作。对于已配置为使用统一存储桶级访问权限的存储桶,Images API 将无法提取该存储桶中的图片并会抛出 TransformationError 错误消息。如果您的存储桶正是以这种方式进行配置的,您可以停用统一存储桶级访问权限

图片格式

该服务接受 JPEG、PNG、WEBP、GIF(包括动画 GIF)、BMP、TIFF 和 ICO 格式的图片数据。转换后的图片可以采用 JPEG、WEBP 和 PNG 格式返回。

如果输入格式和输出格式不同,该服务在执行转换之前会将输入数据转换为输出格式。

提供图片和调整图片大小

通过 image.ServingURL 函数,您可以生成稳定的专用网址以提供适合网络的图片缩略图。

您可以在 Blobstore 中存储原始图片的单个副本,然后请求高性能的每张图片的网址,此网址可以提供自动调整大小和/或裁剪的图片。通过此网址提供图片不会在您的应用中产生任何 CPU 或动态服务负载(尽管带宽仍然照常收费)。

虽然此函数返回的网址总是公开的,但无法猜测;目前不支持私人网址。如果您希望停止提供网址,请使用 image.DeleteServingURL 函数将其删除。

如果您向该函数传递 image.ServingURLOptions 值,则该函数会返回使用这些选项编码的网址。如果您传递 nil,则该函数会返回图片的默认网址,例如:

http://lhx.ggpht.com/randomStringImageId

您可以通过在网址中指定参数来动态调整图片大小和剪裁图片。可用参数有:

  • =sxx,其中 xx 是 0-2560 范围内的整数,表示图片最长边的长度(以像素为单位)。例如,如果添加 =s32,则图片的最长边将被调整为 32 像素。
  • =sxx-c,其中 xx 是 0-2560 范围内的整数,表示剪裁后的图片大小(以像素为单位);-c 用于指示系统对图片进行剪裁。
# Resize the image to 32 pixels (aspect-ratio preserved)
http://lhx.ggpht.com/randomStringImageId=s32

# Crop the image to 32 pixels
http://lhx.ggpht.com/randomStringImageId=s32-c

使用 Blobstore API 通过 Cloud Storage 提供图片

如果您使用 Cloud Storage 作为数据存储区并使用 Blobstore API 提供图片,则需要为 Cloud Storage 对象创建 Blob 键

删除注意事项

如需停止提供存储在 Cloud Storage 或 Blobstore 中的图片,请调用 image.DeleteServingURL 函数。

您应该避免直接删除 Cloud Storage 或 Blobstore 中的图片,因为这样做会让这些图片仍可通过传送网址来访问。

如果停用或删除当初创建了传送网址的应用,则即使基础图片仍然可用,传送网址也将失效。