ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – 为什么Google图像服务在提供服务时将我的WEBP图像转换为JPG?

2019-06-25 07:10:27  阅读:262  来源: 互联网

标签:android google-app-engine blobstore webp


我有许多带有alpha的PNG图像,我已使用XnConvert将其转换为WEBP.转换本身很好,并维护alpha通道,直到上传到BlobStore

在上传到blobstore之前,它看起来像这样:

看起来像这样:

它由服务URL作为JPG提供,因此删除了alpha通道.在App Engine控制台的BlobStore查看器中,它已将content-type设置为application / octet-stream,即使上载的文件具有.webp文件扩展名.

根据Images API documentation,它应该支持WEBP.

上传图片时,我根本没有做任何奇特的事情:

List<BlobKey> blobs = blobstoreService.getUploads(req).get("file");
BlobKey blobKey = blobs.get(0);

ImagesService imagesService = ImagesServiceFactory.getImagesService();
ServingUrlOptions servingOptions = ServingUrlOptions.Builder.withBlobKey(blobKey);
String servingUrl = imagesService.getServingUrl(servingOptions);

编辑:

这是服务网址的示例:
    example serving url

我试图使用Chrome和Android客户端访问它.
这是用于在Android客户端访问它的代码,虽然我不认为它是相关的:

    URL url = new URL(Assets.getServingUrl(resourceName));

    URLConnection connection = url.openConnection();
    connection.connect();

    String contentType = connection.getContentType();
    String fileExt;

    if(contentType.contains("webp"))
        fileExt = ".webp";
    else if(contentType.contains("png"))
        fileExt = ".png";
    else if(contentType.contains("jpeg") || contentType.contains("jpg"))
        fileExt = ".jpg";

    // download the file
    InputStream input = new BufferedInputStream(url.openStream(),8192);
    OutputStream output = MyApp.getAppContext().openFileOutput(resourceName + fileExt,Activity.MODE_PRIVATE);

    byte data[] = new byte[1024];
    int count;
    while ((count = input.read(data)) != -1) {
        output.write(data, 0, count);
    }

    output.flush();
    output.close();
    input.close();

希望通过Google Images API提供图像,因为图像可以动态调整大小.

谁能帮助我指出正确的方向来解决这个问题?

EDIT2:

我尝试直接通过blobstore提供blob,如下所示:blobstoreService.serve(new BlobKey(assetEntity.blobKey),res);而不是通过图像服务,然后它工作正常.但是,这不是一种选择,因为以这种方式服务它们所需的实例小时数会增加.但至少这会将问题缩小到图像服务.

解决方法:

您可以将选项= -rw附加到您的网址.所以你会有类似的东西

http://lh3.ggpht.com/MvNZDvZcBaq_B2MuAj0-Y74sc24WAsOVIQiJzsowu1rVG-ACzGO80xxD9y5OI5dWSCa_Nt41aMmWSSYAbpFE8dW7BhxozH2ikcVLjw=s600-rw

你得到了一个jpeg缩略图,因为这是使用webp时的默认设置,因为所有浏览器尚未完全支持该格式.

标签:android,google-app-engine,blobstore,webp
来源: https://codeday.me/bug/20190625/1284080.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有