GAE - 在服务器端获取图像宽度和高度

Posted

技术标签:

【中文标题】GAE - 在服务器端获取图像宽度和高度【英文标题】:GAE - get Image width and height on server side 【发布时间】:2012-01-15 15:37:07 【问题描述】:

我正在使用图像库之类的应用程序。 这允许用户从他的计算机中选择文件并上传图像。上传图片后,该图片将显示在图库中。 我将图像保存在 blobstore 中,并通过 blobkey 获取。 我想得到一个缩略图(从原始图像调整大小) 在服务器端,我尝试使用图像 api 根据它的 blobkey 调整原始图像的大小,就像这样

public String getImageThumbnail(String imageKey) 
    BlobKey blobKey = new BlobKey(imageKey);
    Image oldImage = ImagesServiceFactory.makeImageFromBlob(blobKey);
    /*
    * can not get width anf height of "oldImage"
    * then I try to get imageDate of old Image to create a new image like this
    */
    byte[] oldImageData = oldImage.getImageData();

   Image newImage1 = ImagesServiceFactory.makeImage(oldImageData);
/*
* however
* oldImage.getImageData(); return null/""
* and cause the Exception when call this ImagesServiceFactory.makeImage(oldImageData)
*/

是否有人在服务器端使用过图像 api,请告诉我如何获取从 blobkey 或字节创建的图像的宽度和高度[]

【问题讨论】:

这是什么语言? 【参考方案1】:

图像对象具有高度/重量详细信息:

int width = oldImage.getWidth();
int height = oldImage.getHeight();

【讨论】:

感谢Splix的回复,不过,我尝试使用它,但没有结果。我得到了这个 ava.lang.UnsupportedOperationException: No image data is available .... 哦,是的,这是已知问题,看看code.google.com/p/googleappengine/issues/detail?id=4757【参考方案2】:

感谢大家阅读 我已经用这个解决了我的问题

    ImagesService imagesService = ImagesServiceFactory.getImagesService();
    BlobKey blobKey =  new BlobKey(imageKey);
    BlobInfo blobInfo = new BlobInfoFactory().loadBlobInfo(blobKey);
    byte[] bytes = blobstoreService.fetchData(blobKey, 0, blobInfo.getSize());
    Image oldImage = ImagesServiceFactory.makeImage(bytes);
    int w = oldImage.getWidth();
    int h = oldImage.getHeight();

【讨论】:

如果 blob 大小超过 1MB,此代码将引发异常。您需要分几块读取 blob。正如 Igor 所指出的,请阅读code.google.com/p/googleappengine/issues/detail?id=4757

以上是关于GAE - 在服务器端获取图像宽度和高度的主要内容,如果未能解决你的问题,请参考以下文章

从二进制获取图像尺寸和图像大小

如何根据swift 4或5中的图像大小使图像视图高度和宽度(纵横比)动态? [关闭]

使用 Python/(GAE) 为 Android 应用推送通知的服务器端实现 [关闭]

GAE:进程终止,因为后端在后端作业中关闭的时间过长

uniapp 获取元素高度

在方面适合后从 UIImageView 获取图像的宽度和高度