2013-10-09 3 views
0

Я обрезаю изображение, возвращенное приложением (по умолчанию) для камеры, но результатом является файл большего размера (~ 4 раза больше).Неожиданное поведение при обрезке изображений

Bitmap bitmapOrg = BitmapFactory.decodeFile(OrigImagePath); 

int width = bitmapOrg.getWidth(); 
int height = bitmapOrg.getHeight(); 
int shortLength = (width <= height) ? width : height; 

// square proportions 
int xOffset = (width - shortLength)/2; 
int yOffset = (height - shortLength)/2; 

Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, xOffset, yOffset, shortLength, shortLength); 

// save 
File f = new File(Util.getDir(OrigImagePath) + File.separator + "thumbnail.jpg"); 

try { 
    FileOutputStream out = new FileOutputStream(f); 
    resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out); 
    out.flush(); 
    out.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Я только что узнал о несоответствии размера файла. Неудивительно, что я получал OutOfMemoryErrors. Я знаю, что могу использовать BitmapFactory.Options inSampleSize, но я просто хочу обрезать исходное изображение без потери деталей. Здесь явно что-то не хватает.

+0

'resizedBitmap.compress (Bitmap.CompressFormat.JPEG, 100, out);' создает несжатую jpeg-версию вашего растрового изображения. – njzk2

+0

Означает ли это, что исходный битмап уже сжат? Я хочу, чтобы результат был таким же, как и оригинал (просто обрезание сторон). – user1923613

+0

Растровое изображение по определению не сжато. 'OrigImagePath', однако, является сжатым файлом изображения. Когда вы декодируете его в растровое изображение, результирующее растровое изображение не сжимается. Когда вы сжимаете его до 'f', формат, который вы выбираете, является без потерь, поэтому очень большой. – njzk2

ответ

0

Может быть, вы должны попробовать это:

Bitmap resizedBitmap = Bitmap.createBitmap (xOffset, yOffset, Bitmap.Config.RGB_565); 

вместо этого:

Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, xOffset, yOffset, shortLength, shortLength); 

Надеется, что это помогло!

Смежные вопросы