Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用google应用程序引擎图像java API减少图像大小失败_Java_Image_Google App Engine_Resize - Fatal编程技术网

使用google应用程序引擎图像java API减少图像大小失败

使用google应用程序引擎图像java API减少图像大小失败,java,image,google-app-engine,resize,Java,Image,Google App Engine,Resize,当图像大小大于1MB时,我想减小图像大小(KB) 当我以较小的宽度和高度应用调整大小转换时,转换图像的大小(以字节为单位)大于原始图像 有趣或悲伤的是,当我以与原始图像相同的宽度和高度调用“调整大小”时,也就是说,尺寸没有改变,变换后的图像的尺寸比原始图像大 final byte[] origData = .....; final ImagesService imagesService = ImagesServiceFactory.getImagesService();

当图像大小大于1MB时,我想减小图像大小(KB)

当我以较小的宽度和高度应用调整大小转换时,转换图像的大小(以字节为单位)大于原始图像

有趣或悲伤的是,当我以与原始图像相同的宽度和高度调用“调整大小”时,也就是说,尺寸没有改变,变换后的图像的尺寸比原始图像大

    final byte[] origData = .....;
    final ImagesService imagesService = ImagesServiceFactory.getImagesService();

    final Image origImage = ImagesServiceFactory.makeImage(oldDate);
    System.out.println("orig dimensions is " + origImage.getWidth() + " X " + origImage.getHeight());

    final Transform resize = ImagesServiceFactory.makeResize(origImage.getWidth(), origImage.getHeight());
    final Image newImage = imagesService.applyTransform(resize, origImage);
    final byte[] newImageData = newImage.getImageData();
    //newImageData.length > origData.length :-(

图像编码有一些特殊的特性,您可以从中观察结果。当您从图像的文件表示形式解码图像时,会生成大量像素。后续编码只看到像素,不知道原始文件的大小。因此,编码步骤是正确的关键

通用格式和PNG格式具有不同的压缩级别,即质量设置。他们可以这样做,因为他们做有损压缩。一般来说,对于细节较多的图像,边缘锐利的图像应进行高质量压缩,而模糊的图像质量较低;正如您可能已经看到的,小图像通常更模糊,而大图像通常更清晰

在不涉及技术细节的情况下,这意味着您应该根据图像的性质设置质量级别,这也取决于输入图像的大小。换句话说,如果将模糊的图像编码为一个大文件,则是在浪费空间,因为使用更少的字节可以获得大致相同的结果。但是编码器没有此信息,因此您必须使用正确的质量设置对其进行配置


编辑:在您的情况下,如果开始时文件比像素数小,则手动设置低质量编码,如果相反,则设置高质量编码。做一些实验,可能所有照片的单一质量设置都是可以接受的。

我遇到的一个陷阱是,我请求PNG输出。。。图像大小也没有改变。图像服务默认忽略了质量参数。根据实施中的注释,质量参数仅适用于JPEG。

这可能没有帮助,但您是否尝试过appengine邮件列表?他们非常有帮助,搜索列表可能会找到答案。刚刚在google app engine Image API上发布了我的问题是否支持此操作压缩/编码?根据发行说明,是:版本1.3.8-2010年10月14日,在Images API中添加了OutputSettings类,以指定在生产环境中运行时的JPEG编码质量。