2011-07-05 5 views
0

私は自分で写真を撮る必要があるアプリを作っています。Android:ビットマップをクロップする(奇妙な方法で)

問題はすべて、画像が480 x 800でなければならないという事実に起因しています。 私が使用しているデバイス(Motorola Xoom)のカメラは明らかにそのアスペクト比をサポートしていません。

私はより大きなサイズ(1280 x 960の高さが十分にある)で写真を撮る方法を探しています。そして、両側、上部と下部から大きな塊を削り取ることを始めます。だから、

いずれかがそれを行う方法(またはより良いアイデア)私はそれを大幅に感謝を提供することができます。

ありがとうございます。

答えて

1

良いアイデアは、適切なパディングとで幅や高さが最大800やショーで最大480にそれを画像サイズを変更することです。 これは簡単な方法です:

import android.graphics.Bitmap; 

public class ImageUtils { 
    public static Bitmap BitmapResizeToMaxXorY(Bitmap srcBitmap, int destSizeX, int destSizeY) { 
     Bitmap ret = null; 

     if (srcBitmap != null && destSizeX > 0 && destSizeY > 0) { 
      Float origSizeX = new Float(srcBitmap.getWidth()); 
      Float origSizeY = new Float(srcBitmap.getHeight()); 

      if (origSizeX > destSizeX || origSizeY > destSizeY) { 
       float origRatio = origSizeX/origSizeY; 
       float destRatio = destSizeX/destSizeY; 

       float targetSizeX; 
       float targetSizeY; 

       if (origRatio >= destRatio) { 
        if (destSizeX >= origSizeX) { 
         targetSizeX = origSizeX; 
        } else { 
         targetSizeX = destSizeX; 
        } 

        targetSizeY = targetSizeX/origRatio; 
       } else { 
        if (destSizeY >= origSizeY) { 
         targetSizeY = origSizeY; 
        } else { 
         targetSizeY = destSizeY; 
        } 

        targetSizeX = targetSizeY * origRatio; 
       } 

       ret = Bitmap.createScaledBitmap(srcBitmap, (int) targetSizeX, (int) targetSizeY, false); 
      } else { 
       // original image is smaller than destination sizes so we are returning original 
       ret = srcBitmap; 
      }   
     } 

     return ret; 
    } 
} 
+0

乾杯。私はそれに渦を巻いて、あなたに結果を知らせます! – Matt

+0

申し訳ありませんが、いくつかの質問があります。私は 'destSizeX'と 'destSizeY'のパラメータは入力する必要がある最大サイズであると思っていますか? – Matt

+0

はい、これは間違いありません。 – Ognyan

関連する問題