Back to project page glide-transformations.
The source code is released under:
Apache License
If you think the Android project glide-transformations listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package jp.wasabeef.glide.transformations; // w ww .java 2 s . c o m /** * Copyright (C) 2015 Wasabeef * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import com.bumptech.glide.load.Transformation; import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapResource; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.RectF; public class CropTransformation implements Transformation<Bitmap> { private BitmapPool mBitmapPool; private int mWidth; private int mHeight; public CropTransformation(BitmapPool pool) { mBitmapPool = pool; } public CropTransformation(BitmapPool pool, int width, int height) { mBitmapPool = pool; mWidth = width; mHeight = height; } @Override public Resource<Bitmap> transform(Resource<Bitmap> resource, int outWidth, int outHeight) { Bitmap source = resource.get(); if (mWidth == 0) { mWidth = source.getWidth(); } if (mHeight == 0) { mHeight = source.getHeight(); } float scaleX = (float) mWidth / source.getWidth(); float scaleY = (float) mHeight / source.getHeight(); float scale = Math.max(scaleX, scaleY); float scaledWidth = scale * source.getWidth(); float scaledHeight = scale * source.getHeight(); float left = (mWidth - scaledWidth) / 2; float top = (mHeight - scaledHeight) / 2; RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight); Bitmap bitmap = Bitmap.createBitmap(mWidth, mHeight, source.getConfig()); Canvas canvas = new Canvas(bitmap); canvas.drawBitmap(source, null, targetRect, null); source.recycle(); return BitmapResource.obtain(bitmap, mBitmapPool); } @Override public String getId() { return "CropTransformation(width=" + mWidth + ", height=" + mHeight + ")"; } }