使用 ImageLoader 的最佳裁剪 - Android
Top crop with ImageLoader - Android
我正在将 URL 中的图像加载到我的 ImageView 中,就像这样 -
ImageLoader.getInstance().displayImage(url, imageview, display-options)
现在我想将图像裁剪到中心顶部。我尝试使用 https://gist.github.com/arriolac/3843346,但我认为它需要通过可绘制对象获取图像,而我想使用 ImageLoader 来设置图像。
有人可以帮助我了解是否可以将 https://code.google.com/archive/p/android-query/(Android 查询)与 ImageLoader 结合使用吗?
有什么方法可以在 Android 中原生处理裁剪(除了 centerCrop)吗?
将您的 ImageView 替换为 ProfileImageView 并享受视图:)
public class ProfileImageView extends ImageView {
private Bitmap bm;
public ProfileImageView(Context context, AttributeSet attrs) {
super(context, attrs);
bm = null;
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (bm != null) {
setImageBitmap(bm);
bm = null;
}
}
@Override
public void setImageBitmap(Bitmap bm) {
int viewWidth = getWidth();
int viewHeight = getHeight();
if (viewWidth == 0 || viewHeight == 0) {
this.bm = bm;
return;
}
setScaleType(ScaleType.MATRIX);
Matrix m = getImageMatrix();
m.reset();
int min = Math.min(bm.getWidth(), bm.getHeight());
int cut;
if (bm.getWidth() > viewWidth && bm.getWidth() > bm.getHeight()) {
cut = Math.round((bm.getWidth() - viewWidth) / 2.f);
} else {
cut = 0;
}
RectF drawableRect = new RectF(cut, 0, min - cut, min);
RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
m.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.START);
setImageMatrix(m);
super.setImageBitmap(bm);
}
}
我正在将 URL 中的图像加载到我的 ImageView 中,就像这样 -
ImageLoader.getInstance().displayImage(url, imageview, display-options)
现在我想将图像裁剪到中心顶部。我尝试使用 https://gist.github.com/arriolac/3843346,但我认为它需要通过可绘制对象获取图像,而我想使用 ImageLoader 来设置图像。
有人可以帮助我了解是否可以将 https://code.google.com/archive/p/android-query/(Android 查询)与 ImageLoader 结合使用吗?
有什么方法可以在 Android 中原生处理裁剪(除了 centerCrop)吗?
将您的 ImageView 替换为 ProfileImageView 并享受视图:)
public class ProfileImageView extends ImageView {
private Bitmap bm;
public ProfileImageView(Context context, AttributeSet attrs) {
super(context, attrs);
bm = null;
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (bm != null) {
setImageBitmap(bm);
bm = null;
}
}
@Override
public void setImageBitmap(Bitmap bm) {
int viewWidth = getWidth();
int viewHeight = getHeight();
if (viewWidth == 0 || viewHeight == 0) {
this.bm = bm;
return;
}
setScaleType(ScaleType.MATRIX);
Matrix m = getImageMatrix();
m.reset();
int min = Math.min(bm.getWidth(), bm.getHeight());
int cut;
if (bm.getWidth() > viewWidth && bm.getWidth() > bm.getHeight()) {
cut = Math.round((bm.getWidth() - viewWidth) / 2.f);
} else {
cut = 0;
}
RectF drawableRect = new RectF(cut, 0, min - cut, min);
RectF viewRect = new RectF(0, 0, viewWidth, viewHeight);
m.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.START);
setImageMatrix(m);
super.setImageBitmap(bm);
}
}