全部产品
Search
文档中心

对象存储 OSS:获取信息

更新时间:Mar 08, 2024

部分图片可能包含可交换图像文件EXIF信息,该信息主要用于记录数码照片的属性信息和拍摄数据,包括压缩比Compression、方向Orientation、水平分辨率XResolution、垂直分辨率YResolution等。如果您希望获取图片的EXIF信息,请在图片URL中添加info参数。

参数说明

操作名称:info

返回的图片信息为JSON格式。

使用限制

图片格式只支持JPG、PNG、BMP、GIF、WebP、TIFF、HEIC。

说明

PNG不支持解析EXIF信息。

示例

您可以通过文件URL、SDK、API方式设置图片处理参数。本文以文件URL为例进行介绍。文件URL仅适用于公共访问的图片。如果是私有访问的图片,请使用SDK、API处理图片。更多信息,请参见图片处理操作方式

  • 获取不包含EXIF信息的原图示例

    https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/info

    当图片中不包含EXIF信息,则在文件URL中添加info参数时,仅返回图片的基本信息,例如图片大小、格式、图片高度以及图片宽度等。

    {
      "FileSize": {"value": "21839"},
      "Format": {"value": "jpg"},
      "FrameCount": {"value": "1"},
      "ImageHeight": {"value": "267"},
      "ImageWidth": {"value": "400"},
      "ResolutionUnit": {"value": "1"},
      "XResolution": {"value": "1/1"},
      "YResolution": {"value": "1/1"}
    }
  • 获取包含EXIF信息的原图示例

    https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg?x-oss-process=image/info

    当图片中包含EXIF信息,则在文件URL中添加info参数时,返回图片的基本信息以及EXIF信息。有关EXIF的更多信息,请参见EXIF2.31

    {
      "Compression": {"value": "6"},
      "DateTime": {"value": "2015:02:11 15:38:27"},
      "ExifTag": {"value": "2212"},
      "FileSize": {"value": "23471"},
      "Format": {"value": "jpg"},
      "GPSLatitude": {"value": "0deg "},
      "GPSLatitudeRef": {"value": "North"},
      "GPSLongitude": {"value": "0deg "},
      "GPSLongitudeRef": {"value": "East"},
      "GPSMapDatum": {"value": "WGS-84"},
      "GPSTag": {"value": "4292"},
      "GPSVersionID": {"value": "2 2 0 0"},
      "ImageHeight": {"value": "333"},
      "ImageWidth": {"value": "424"},
      "JPEGInterchangeFormat": {"value": "4518"},
      "JPEGInterchangeFormatLength": {"value": "3232"},
      "Orientation": {"value": "7"},
      "ResolutionUnit": {"value": "2"},
      "Software": {"value": "Microsoft Windows Photo Viewer 6.1.7600.16385"},
      "XResolution": {"value": "96/1"},
      "YResolution": {"value": "96/1"}}

常见问题

私有访问的图片如何获取图片信息?

针对私有访问的图片,您可以通过SDK的方式将获取图片信息操作加入签名URL中,然后访问URL获取图片信息。

  1. 生成签名URL。

    以Java SDK为例:

    import com.aliyun.oss.*;
    import com.aliyun.oss.common.auth.*;
    import com.aliyun.oss.model.GeneratePresignedUrlRequest;
    import java.net.URL;
    import java.util.Date;
    
    public class Demo {
        public static void main(String[] args) throws Throwable {
            // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // 强烈建议不要把访问凭证保存到工程代码里,否则可能导致访问凭证泄露,威胁您账号下所有资源的安全。本代码示例以从环境变量中获取访问凭证为例。运行本代码示例之前,请先配置环境变量。
            EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
            // 填写Bucket名称,例如examplebucket。
            String bucketName = "examplebucket";
            // 填写Object完整路径。Object完整路径中不能包含Bucket名称。
            String objectName = "exampleobject.jpg";
    
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
    
            try {
                // 获取图片信息。
                String style = "image/info";
                // 指定签名URL过期时间为10分钟。
                Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );
                GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
                req.setExpiration(expiration);
                req.setProcess(style);
                URL signedUrl = ossClient.generatePresignedUrl(req);
                System.out.println(signedUrl);
            } catch (OSSException oe) {
                System.out.println("Caught an OSSException, which means your request made it to OSS, "
                        + "but was rejected with an error response for some reason.");
                System.out.println("Error Message:" + oe.getErrorMessage());
                System.out.println("Error Code:" + oe.getErrorCode());
                System.out.println("Request ID:" + oe.getRequestId());
                System.out.println("Host ID:" + oe.getHostId());
            } catch (ClientException ce) {
                System.out.println("Caught an ClientException, which means the client encountered "
                        + "a serious internal problem while trying to communicate with OSS, "
                        + "such as not being able to access the network.");
                System.out.println("Error Message:" + ce.getMessage());
            } finally {
                if (ossClient != null) {
                    ossClient.shutdown();
                }
            }
        }
    }
  2. 使用浏览器访问签名URL,获取图片信息。