失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 对图片进行等比例拉伸

对图片进行等比例拉伸

时间:2021-07-12 22:38:04

相关推荐

对图片进行等比例拉伸

/*** 对图片根据手机宽高进行等比例拉伸* @param activity* @param view* @param drawableResId*/public static void scaleImage(final Activity activity, final View view, int drawableResId) {// 获取屏幕的高宽Point outSize = new Point();activity.getWindow().getWindowManager().getDefaultDisplay().getSize(outSize);// 解析将要被处理的图片Bitmap resourceBitmap = BitmapFactory.decodeResource(activity.getResources(), drawableResId);if (resourceBitmap == null) {return;}// 开始对图片进行拉伸或者缩放// 使用图片的缩放比例计算将要放大的图片的高度int bitmapScaledHeight = Math.round(resourceBitmap.getHeight() * outSize.x * 1.0f / resourceBitmap.getWidth());// 以屏幕的宽度为基准,如果图片的宽度比屏幕宽,则等比缩小,如果窄,则放大final Bitmap scaledBitmap = Bitmap.createScaledBitmap(resourceBitmap, outSize.x, bitmapScaledHeight, false);view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {@Overridepublic boolean onPreDraw() {//这里防止图像的重复创建,避免申请不必要的内存空间if (scaledBitmap.isRecycled())//必须返回truereturn true;// 当UI绘制完毕,我们对图片进行处理int viewHeight = view.getMeasuredHeight();// 计算将要裁剪的图片的顶部以及底部的偏移量int offset = (scaledBitmap.getHeight() - viewHeight) / 2;// 对图片以中心进行裁剪,裁剪出的图片就是非常适合做引导页的图片了Bitmap finallyBitmap = Bitmap.createBitmap(scaledBitmap, 0, offset, scaledBitmap.getWidth(),scaledBitmap.getHeight() - offset * 2);if (!finallyBitmap.equals(scaledBitmap)) {//如果返回的不是原图,则对原图进行回收scaledBitmap.recycle();System.gc();}// 设置图片显示view.setBackgroundDrawable(new BitmapDrawable(activity.getResources(), finallyBitmap));return true;}});}

如果觉得《对图片进行等比例拉伸》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。