私は20MBのサイズの画像を持っていると仮定し、15Mbの最大サイズまで縮小する必要があります。これをどのように達成するのですか?ImageResize for android sample
以外のapiは見つかりませんcreateScaledBitmap画像の高さと幅だけを取りますが、目標サイズはありません。
どうすればこの問題を解決できますか?私は盲目的に幅と高さを変えて、< =目標サイズになるまで続けなければならないのでしょうか?
助けてください。次のように
私は20MBのサイズの画像を持っていると仮定し、15Mbの最大サイズまで縮小する必要があります。これをどのように達成するのですか?ImageResize for android sample
以外のapiは見つかりませんcreateScaledBitmap画像の高さと幅だけを取りますが、目標サイズはありません。
どうすればこの問題を解決できますか?私は盲目的に幅と高さを変えて、< =目標サイズになるまで続けなければならないのでしょうか?
助けてください。次のように
のGraphics2Dは、画像リサイズ機能を提供している:
BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
g.dispose();
あなたが再サイズの画像品質を向上したい場合は、いくつかの記事によると、あなたはたRenderingHintsなどを追加することができます次の:
BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
g.dispose();
g.setComposite(AlphaComposite.Src);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
全例利用可能http://www.mkyong.com/java/how-to-resize-an-image-in-java/
使用して画像
// Draw Bitmap on Canvas
public void setBitmap(String imageUrl){
Bitmap myBitmap = BitmapFactory.decodeFile(imageUrl);
Bitmap scaleBitmap = null;
int bWidth = myBitmap.getWidth();
int bHeight = myBitmap.getHeight();
int diff = 0;
Log.d(TAG, "bitmapWidth = " + bitmapWidth + " bitmapHeight = " + bitmapHeight);
Log.d(TAG, "bWidth = " + bWidth + " bHeight = " + bHeight);
if(bWidth >= bHeight){
if(bWidth > bitmapWidth){
// landscape
float ratio = (float) bWidth/bitmapWidth;
diff = bWidth - bitmapWidth;
bHeight = (int)(bHeight/ratio);
scaleBitmap = Bitmap.createScaledBitmap(myBitmap, bWidth - diff, bHeight, false);
}
else{
scaleBitmap = myBitmap;
}
}
else{
if(bHeight > bitmapHeight){
float ratio = (float) bHeight/bitmapHeight;
diff = bHeight - bitmapHeight;
bWidth = (int)(bWidth/ratio);
scaleBitmap = Bitmap.createScaledBitmap(myBitmap, bWidth, bHeight - diff, false);
}
else{
scaleBitmap = myBitmap;
}
}
canvasBitmap = scaleBitmap;
invalidate();
}
のサイズを変更するため、このコードは、画像サイズやファイルサイズを縮小知っているように矢印を上げるか確認しましたイメージのサイズを変更するためのリンクも取得できます。
** bitmapWidthとbitmapHeight **の初期値はどこですか? –
私はいつも静的** IMG_WIDTH、IMG_HEIGHT **の値を述べるべきですか?これを行うには? –
はい。あなたは –