当前位置:  开发笔记 > 编程语言 > 正文

如何在whatsapp中对图像进行子采样/调整大小

如何解决《如何在whatsapp中对图像进行子采样/调整大小》经验,为你挑选了1个好方法。

通过whatsapp发送图像时,您可以看到您在图像视图中发送的图像非常好

例如,我发送了两张图片给我的朋友

第一张图片的大小:1296像素 X 2304像素

第二图像的大小:1920像素 × 1080像素

这个图像太大,因此whatsapp必须先缩放它们才能在imageview中显示它们

通过whatapp 333像素 X 339像素缩放后的第一图像的大小

通过whatsapp 333像素 X 187像素缩放后的第二图像的大小

如您所见,宽度相同,只有高度不同.我试图找出whatapp如何缩放这些图像,但我的方法给了我一个不同维度的图像远离whatsapp的图像

方法1

private void resizeImage(){

Uri selectedImage = imageReturnedIntent.getData();
                      d("image url is " + selectedImage);
                      InputStream imageStream = getContentResolver().openInputStream(selectedImage);
                       BitmapFactory.decodeStream(imageStream,null, options);
                      imageHeight = options.outHeight;
                      imageWidth = options.outWidth;

                      options.inSampleSize = calculateInSampleSize(options,reqWidth,reqHeight);
                      options.inJustDecodeBounds = false;
                      bitmap = BitmapFactory.decodeStream(imageStream,null, options);

}
private int calculateInSampleSize(BitmapFactory.Options options, int reqWidth , int reqHeght){

    int height = options.outHeight;
    int width = options . outWidth;
    d("width is "+ width + " height is "+ height);
    d("required width is "+ reqWidth + " required height "+ reqHeght);
    int inSampleSize = 1;

    if(height > reqHeght || width > reqWidth){

        int heightRatio = Math.round((float)height/(float)reqHeght);
        d("height ratio is "+ heightRatio);

        int widthRatio = Math.round((float)width / (float) reqWidth);
        d("width ratio is "+widthRatio);

        inSampleSize = (heightRatio > widthRatio)? heightRatio :widthRatio;
    }
    d(" insample size is "+ inSampleSize);
    return inSampleSize;
}

使用上述方法输出第一张图像:较小(<333)宽度,非常大的高度(> 339.它是579 !!)

第二种方法

private Bitmap scaleToFitWidth(Bitmap b, int width){
  float factor = width/b.getWidth(); // width is 333

  return Bitmap.createScaledBitmap(b, width,(int)(b.getHeight() * factor),true)
}

第二种方法输出第一张图像:图像高度非常大!

问题有没有人知道如何像所有设备上的 whatapp一样非常好地扩展图像?(如果可能的话,我想和whatsapp一样)

编辑:whatsapp图像

我的huawel手机

 形象是huawel

三星平板电脑

三星泰勒的形象



1> Vipul Asri..:

您可以签出此代码,它的工作方式与您想要的WhatsApp图像压缩相同.此代码已根据我的用法进行了修改.使用此代码将为您提供:

低尺寸图像约100kb,无需播放图像质量.

高像素图像将缩小到maxWidthmaxHeight,而不会失去其原始质量.

原始文章:像WhatsApp一样加载超快速图像

演示:

原始图像:尺寸 - 3.84Mb尺寸 - 3120*4160

压缩图像:尺寸 - 157Kb尺寸 - 960*1280

编辑1:您还可以制作扩展Class 的自定义Square ImageViewImageView.SquareImageView

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有