You need to enable JavaScript to run this app.
对象存储

对象存储

复制全文
图片处理
获取图片信息(Java SDK)
复制全文
获取图片信息(Java SDK)

获取图片信息功能可以获取到图片的基本信息,包括图片的长、宽、大小和格式。如果图片包含 Exif 信息,将按照 JSON 格式返回内容。本文介绍如何通过 TOS Java SDK 获取图片信息。

示例代码

以下代码展示如何获取图片信息。

import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.databind.JsonNode;
import com.volcengine.tos.TOSV2;
import com.volcengine.tos.TOSV2ClientBuilder;
import com.volcengine.tos.TosClientException;
import com.volcengine.tos.TosServerException;
import com.volcengine.tos.internal.util.TosUtils;
import com.volcengine.tos.model.object.GetObjectV2Input;
import com.volcengine.tos.model.object.GetObjectV2Output;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class ImageInfoExample {
    public static void main(String[] args) {
        String endpoint = "your endpoint";
        String region = "your region";
        String accessKey = System.getenv("TOS_ACCESS_KEY");
        String secretKey = System.getenv("TOS_SECRET_KEY"); 

        String bucketName = "bucket-example";
        // 需要确保对象已存在
        String objectKey = "image.png";
        String style = "image/info"; // 获取图片信息

        TOSV2 tos = new TOSV2ClientBuilder().build(region, endpoint, accessKey, secretKey);
        try {
            GetObjectV2Input input = new GetObjectV2Input().setBucket(bucketName).setKey(objectKey).setProcess(style);
            try (ByteArrayOutputStream stream = new ByteArrayOutputStream();
                 GetObjectV2Output output = tos.getObject(input)) {
                byte[] buffer = new byte[1024];
                int length;
                while ((length = output.getContent().read(buffer)) != -1) {
                    stream.write(buffer, 0, length);
                }
                String respBody = stream.toString("UTF-8");
                System.out.println("Get image info succeed, image info is " + respBody);
                JsonNode jsonNode = TosUtils.getJsonMapper().readTree(respBody);
                String height = jsonNode.get("ImageHeight").get("value").asText();
                String width = jsonNode.get("ImageWidth").get("value").asText();
                String fileSize = jsonNode.get("FileSize").get("value").asText();
                String format = jsonNode.get("Format").get("value").asText();
                System.out.println("Image info height:" + height + ", width:" + width + ", size:" + fileSize + ", format:" + format);
            } catch (JacksonException e) {
                System.out.println("parse response data failed");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("read response data failed");
                e.printStackTrace();
            }
        } catch (TosClientException e) {
            // 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送。
            System.out.println("get image info failed");
            System.out.println("Message: " + e.getMessage());
            if (e.getCause() != null) {
                e.getCause().printStackTrace();
            }
        } catch (TosServerException e) {
            // 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息。
            System.out.println("get image info failed");
            System.out.println("StatusCode: " + e.getStatusCode());
            System.out.println("Code: " + e.getCode());
            System.out.println("Message: " + e.getMessage());
            System.out.println("RequestID: " + e.getRequestID());
        } catch (Throwable t) {
            // 作为兜底捕获其他异常,一般不会执行到这里。
            System.out.println("get image info failed");
            System.out.println("unexpected exception, message: " + t.getMessage());
        }
    }
}

相关文档

关于获取图片信息的详细介绍,请参见获取信息

最近更新时间:2024.02.04 18:31:08
这个页面对您有帮助吗?
有用
有用
无用
无用