以屏幕宽或者高为基准等比例缩放图片(充满宽或者充满高)

Picasso.with(this).load("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1515779973580&di=787d4179991200c6199d7b6a49c3223f&imgtype=0&src=http%3A%2F%2Fimg3.redocn.com%2F20120713%2FRedocn_2012071319483177.jpg")
                    .transform(new CropSquareTransformation()).into((ImageView) view.findViewById(R.id.guide_image));

private class CropSquareTransformation implements Transformation {
        @Override
        public Bitmap transform(Bitmap source) {
            // 获取屏幕的高宽
            Point outSize = new Point();
            getWindow().getWindowManager().getDefaultDisplay().getSize(outSize);
            LogUtil.d("BitmapAAAAAA","屏幕 宽度 : " + outSize.x + "高度 : " + outSize.y);


            if (source.getWidth() == 0 || source.getHeight() == 0) {
                return source;
            }


            if (source.getWidth() == outSize.x || source.getHeight() == outSize.y) {
                return source;
            }


            Bitmap scaledBitmap = null;
            if (source.getWidth() > source.getHeight()) {
                // 使用图片的缩放比例计算将要放大的图片的高度
                int bitmapScaledHeight = Math.round(source.getHeight() * outSize.x * 1.0f / source.getWidth());


                // 以屏幕的宽度为基准,如果图片的宽度比屏幕宽,则等比缩小,如果窄,则放大
                scaledBitmap = Bitmap.createScaledBitmap(source, outSize.x, bitmapScaledHeight, false);
                LogUtil.d("BitmapAAAAAA","以屏幕的宽度为基准 宽度 : " + scaledBitmap.getWidth() + "高度 : " + scaledBitmap.getHeight());
            } else {
                // 使用图片的缩放比例计算将要放大的图片的宽度
                int bitmapScaledWidth = Math.round(source.getWidth() * outSize.y * 1.0f / source.getHeight());


                // 以屏幕的高度为基准,如果图片的高度比屏幕高,则等比缩小,如果矮,则放大
                scaledBitmap = Bitmap.createScaledBitmap(source, bitmapScaledWidth, outSize.y, false);
                LogUtil.d("BitmapAAAAAA","以屏幕的高度为基准 宽度 : " + scaledBitmap.getWidth() + "高度 : " + scaledBitmap.getHeight());
            }


            if (scaledBitmap != source) {
                // Same bitmap is returned if sizes are the same
                source.recycle();
            }


            return scaledBitmap;
        }


        @Override
        public String key() {
            return "desiredWidth" + " desiredHeight";
        }
    }

你可能感兴趣的:(Android)