2012-05-02 38 views

Trả lời

146

Hãy thử:

Bitmap yourBitmap; 
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true); 

hay:

resized = Bitmap.createScaledBitmap(yourBitmap,(int)(yourBitmap.getWidth()*0.8), (int)(yourBitmap.getHeight()*0.8), true); 
+8

Nó hiển thị hình ảnh bị mờ khi thu nhỏ ... –

4
BitmapFactory.Options options=new BitmapFactory.Options(); 
options.inSampleSize=2; //try to decrease decoded image 
Bitmap bitmap=BitmapFactory.decodeStream(is, null, options); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 70, fos); //compressed bitmap to file 
6

Bạn có thể sử dụng Matrix để thay đổi kích thước hình ảnh máy ảnh của bạn ....

BitmapFactory.Options options=new BitmapFactory.Options(); 
InputStream is = getContentResolver().openInputStream(currImageURI); 
bm = BitmapFactory.decodeStream(is,null,options); 
int Height = bm.getHeight(); 
int Width = bm.getWidth(); 
int newHeight = 300; 
int newWidth = 300; 
float scaleWidth = ((float) newWidth)/Width; 
float scaleHeight = ((float) newHeight)/Height; 
Matrix matrix = new Matrix(); 
matrix.postScale(scaleWidth, scaleHeight); 
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0,Width, Height, matrix, true); 
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap); 
6

Chụp hình ảnh và thay đổi kích thước nó.

Bitmap image2 = (Bitmap) data.getExtras().get("data"); 
img.setImageBitmap(image2); 
String incident_ID = IncidentFormActivity.incident_id; 

imagepath="/sdcard/RDMS/"+incident_ID+ x + ".PNG"; 
File file = new File(imagepath); 
    try { 
     double xFactor = 0; 
     double width = Double.valueOf(image2.getWidth()); 
     Log.v("WIDTH", String.valueOf(width)); 
     double height = Double.valueOf(image2.getHeight()); 
     Log.v("height", String.valueOf(height)); 
     if(width>height){ 
     xFactor = 841/width; 
    } 
    else{ 
     xFactor = 595/width; 
    } 


Log.v("Nheight", String.valueOf(width*xFactor)); 
Log.v("Nweight", String.valueOf(height*xFactor)); 
int Nheight = (int) ((xFactor*height)); 
int NWidth =(int) (xFactor * width) ; 

bm = Bitmap.createScaledBitmap(image2,NWidth, Nheight, true); 
file.createNewFile(); 
FileOutputStream ostream = new FileOutputStream(file); 
bm.compress(CompressFormat.PNG, 100, ostream); 
ostream.close(); 
4
bm = Bitmap.createScaledBitmap(bitmapSource, width, height, true); 

:)

28
public Bitmap resizeBitmap(String photoPath, int targetW, int targetH) { 
    BitmapFactory.Options bmOptions = new BitmapFactory.Options(); 
    bmOptions.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(photoPath, bmOptions); 
    int photoW = bmOptions.outWidth; 
    int photoH = bmOptions.outHeight; 

    int scaleFactor = 1; 
    if ((targetW > 0) || (targetH > 0)) { 
      scaleFactor = Math.min(photoW/targetW, photoH/targetH);   
    } 

    bmOptions.inJustDecodeBounds = false; 
    bmOptions.inSampleSize = scaleFactor; 
    bmOptions.inPurgeable = true; //Deprecated API 21 

    return BitmapFactory.decodeFile(photoPath, bmOptions);    
} 
5

// ảnh là hình ảnh bitmap

Bitmap btm00 = Utils.getResizedBitmap(photo, 200, 200); 

setimage.setImageBitmap(btm00); 

    And in Utils class : 

    public static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) { 
int width = bm.getWidth(); 
int height = bm.getHeight(); 
float scaleWidth = ((float) newWidth)/width; 
float scaleHeight = ((float) newHeight)/height; 
Matrix matrix = new Matrix(); 
// RESIZE THE BIT MAP 
matrix.postScale(scaleWidth, scaleHeight); 
// RECREATE THE NEW BITMAP 
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, 
matrix, false); 
return resizedBitmap; 
} 
2
resized = Bitmap.createScaledBitmap(yourImageBitmap,(int)(yourImageBitmap.getWidth()*0.9), (int)(yourBitmap.getHeight()*0.9), true); 
0
BitmapFactory.Options options=new BitmapFactory.Options(); 
      options.inSampleSize = 10; 
      FixBitmap = BitmapFactory.decodeFile(ImagePath, options); 
      //FixBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.gv); 

      byteArrayOutputStream = new ByteArrayOutputStream(); 
      FixBitmap.compress(Bitmap.CompressFormat.JPEG, 80, byteArrayOutputStream); //compress to 50% of original image quality 
      byteArray = byteArrayOutputStream.toByteArray(); 

      ConvertImage = Base64.encodeToString(byteArray, Base64.DEFAULT); 
Các vấn đề liên quan