我從cms拉取圖像,它們是橫幅樣式(寬度= 900,高度= 250)。我必須在全屏人像模式下使用它們,所以它們自然會嚴重扭曲。我已經嘗試了很多不同的東西與XML,調整位圖大小,畢加索轉換等..但不知道還有什麼嘗試在這一點上。我唯一能夠保持質量的是中心製作,但這不是一個選擇。我需要圖像來保持其寬高比。這甚至有可能在不犧牲寬高比的情況下完成?圖像縱橫比爲1.7,而我的銀河系s5上爲0.5625。Android位圖縮放橫幅圖像到肖像
編輯瞭解詳情:
這是一個專有的項目,所以我不能包括我使用的圖像,但他們是旗幟的風格。它們正在用於screenSizeHeight - toolbarHeight
和screensizewidth/1.2
的圖像視圖中。
這就是我想如何調整位圖的大小。這只是中心,而且太大了。
public static final Bitmap scaleAndCropBitmapByPixelDimensions(final Context context, final Bitmap sourceBitmap, final int targetWidth, final int targetHeight)
{
try
{
if (context != null && sourceBitmap != null)
{
int srcWidth = sourceBitmap.getWidth();
int srcHeight = sourceBitmap.getHeight();
float targetAspectRatio = (float)targetWidth/(float)targetHeight;
float srcAspectRatio = (float)srcWidth/(float)srcHeight;
int scaleWidth = targetWidth;
int scaleHeight = targetHeight;
int x = 0;
int y = 0;
if (srcAspectRatio < targetAspectRatio)
{
scaleWidth = targetWidth;
scaleHeight = (int)((float)(1/srcAspectRatio) * (float)scaleWidth);
x = 0;
y = (scaleHeight - targetHeight)/2;
}
else
{
scaleHeight = targetHeight;
scaleWidth = (int)((float)srcAspectRatio * (float)scaleHeight);
x = (scaleWidth - targetWidth)/2;
y = 0;
}
Bitmap scaledBitmap = Bitmap.createScaledBitmap(sourceBitmap, scaleWidth, scaleHeight, true);
Bitmap croppedBitmap = Bitmap.createBitmap(scaledBitmap, x, y, targetWidth, targetHeight);
return croppedBitmap;
}
}
catch (Exception ex)
{
//Log.e(LOG_TAG, "Error scaling and cropping bitmap", ex);
ex.printStackTrace();
}
return null;
}
設置位圖變換
@Override
public Bitmap transform(Bitmap sourceBitmap) {
i_bitmap = Utils.scaleAndCropBitmapByPixelDimensions(mContext,sourceBitmap,targetWidth,targetHeight);
if (sourceBitmap != i_bitmap) {
// Same bitmap is returned if sizes are the same
sourceBitmap.recycle();
}
return i_bitmap;
}
imageview的XML
<ImageView
android:id="@+id/bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:scaleType="center" />
和與畢加索加載圖像 Picasso.with(mContext) .load(url) .transform(transformation) .into(getBg());
編輯了更多信息。不會旋轉使圖像側面或我誤解你的建議? – user3050491