• 图片按照指定比例裁剪


    需求:按照屏幕比例或者按照指定的宽高比例裁剪,并且保持图片不能缩放。所以想法是按照需求的比例,抠出图片中间那部分。若是加载网络图片,可以用Glide加载过程中的回调。

        /**
         * @param bitmap 源bitmap
         * @param w 缩放后指定的宽高
         * @param h 缩放后指定的高度
         * @return 缩放后的中间部分图片 Bitmap
         */
        public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {
            Bitmap newbmp = null;
            int width = bitmap.getWidth();
            int height = bitmap.getHeight();
            LogUtil.i("zoomBitmap---", "" + width + "---" + "height:" + height);
            if(bitmap!=null){
                double whscale=(double)w/(double)h;//宽高比
                double hwscale=(double)h/(double)w;//高宽比
                int nWidth = (int) (height*whscale);
                int nHeight = (int) (width*hwscale);
                try {
                    if (width>height) {
                        if (width<nWidth) {
                            if ((height-nHeight)>nHeight/3) {
                                newbmp = Bitmap.createBitmap(bitmap,0,(int)nHeight/3, width,nHeight);
                            }else{
                                newbmp = Bitmap.createBitmap(bitmap,0,0, width,nHeight);
                            }
                        }else{
                            newbmp = Bitmap.createBitmap(bitmap,(int)(width-nWidth)*2/3,0, nWidth,height);
                        }
                    } else if (width<=height) {
                        if (height<nHeight) {
                            if ((width-nWidth)>nWidth/3) {
                                newbmp = Bitmap.createBitmap(bitmap,(int)nWidth/3,0, nWidth,height);
                            }else{
                                newbmp = Bitmap.createBitmap(bitmap,0,0, nWidth,height);
                            }
                        }else{
                            newbmp = Bitmap.createBitmap(bitmap,0,(height-nHeight)*2/3, width,nHeight);
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    return null;
                }
            }
            return newbmp;
        }
    

      需要注意的是:按比例计算图片宽或高的时候,需要比较比例高与图片本身高的大小。

          By LiYing

  • 相关阅读:
    五月八日冲刺
    五月七号冲刺
    五月六日站立会议
    prufer序列学习笔记
    批量数据导入优化
    索引失效
    慢查询定位与分析
    redis主从同步
    redis RBD机制
    redis AOF机制
  • 原文地址:https://www.cnblogs.com/widgetbox/p/8891918.html
Copyright © 2020-2023  润新知