Picassoで特定の画像を処理した時に、returnされない。
Androidの画像処理ライブラリPicassoを使って、以下の画像処理した時以下のTransformationを実装したクラスでreturnされず(recycleまではされている)に何度も、このメソッドがループ?して最終的に画像サイズや切り取り位置の値が以下のようになりクラッシュします。もと画像にサイズは640×480です。他の画像ではできているのでなんでそうなるのかさっぱりわかりません。原因がわかれば教えていただければ幸いです。よろしくおねがいします。
画像URL
https://i.ytimg.com/vi/RFinNxS5KN4/sddefault.jpg
Picassoの利用箇所
Picasso.with(mContext)
.load(APIUtil.checkThumbnail(item))
.transform(new ViewUtils.TopThumbnailEditor())
.placeholder(R.drawable.top_thumbnail_placeholder)
.fit()
.into(holder.thumbnail);
Transformation実装クラス
private static final float THUMBNAIL_HEIGHT_DIVINER = 9f/16f;
private static final float TOP_HEIGHT_DIVINER = 16f/43f;
public static class TopThumbnailEditor implements Transformation{
@Override
public Bitmap transform(Bitmap source) {
float width = source.getWidth();
float height = source.getHeight();
float newHeight = width * THUMBNAIL_HEIGHT_DIVINER;
float heightCutSize = (height - newHeight)/2;
newHeight = width * TOP_HEIGHT_DIVINER;
float moreHeightCutSize = newHeight/2;
Bitmap result = Bitmap.createBitmap(source, 0, (int)(heightCutSize+moreHeightCutSize), (int)width, (int)newHeight);
if(result!=source)
source.recycle();
return result;
}
@Override
public String key() {
return "TopThumbnailEditor";
}
}
最終的な画像のサイズ、切り取り位置など
width: 1020.0
height: 379.0
X座標の切り取り位置: -97.375
Y座標の切り取り位置: 189.76744