借助 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 中的图片,因为这样做会让这些图片仍可通过传送网址来访问。
如果停用或删除当初创建了传送网址的应用,则即使基础图片仍然可用,传送网址也将失效。