picasso 将图片裁剪成一个正方形

该博客介绍了如何在Android中利用Picasso库实现图片的裁剪和缩放,创建了一个名为TransformSquare的转换方法,确保图片转换为正方形。通过计算合适的缩放比例和裁剪起点,无论原始图片宽高比如何,都能得到指定大小的正方形图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现picasso 中的转换方法
裁剪后缩放 

public class TransformSquare implements Transformation {
    private  float size;
    private  String key;

    public TransformSquare(float size, String key) {
        this.size = size;
        this.key = key;
    }

    /**
     * @param source 需要加工的图片
     * @return
     */
    @Override
    public Bitmap transform(Bitmap source) {
        int height = source.getHeight();
        int width = source.getWidth();
        Bitmap target = null;
        Matrix matrix = new Matrix();

        //宽高相等
        if (height == width) {
            float scale = 1.0f * size / width;
            //设置x,y缩放比例
            matrix.setScale(scale, scale);
            target = Bitmap.createBitmap(source, 0, 0, width, height, matrix, false);
        //宽高不相等
        } else {
            int fromX = 0, fromY = 0;
            int fSize = 0;
            //确定正方形变长
            fSize = Math.min(width, height);
            //计算正方形在原图  的开始裁剪点
            fromX = ((width - fSize) / 2);
            fromY = ((height - fSize) / 2);
            //先剪出一个正方形
            Bitmap bitmap = Bitmap.createBitmap(source, fromX, fromY, fSize, fSize);
            float scale = 1.0f * size / fSize;
            //设置x,y缩放比例
            matrix.setScale(scale, scale);
            target = Bitmap.createBitmap(bitmap, 0, 0, fSize, fSize, matrix, false);
            bitmap.recycle();
        }
        source.recycle();
        return target;
    }

    @Override
    public String key() {
        return key;
    }

    

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值