0

Моя проблема в том, что я сжимаю размер изображения (от Mb до Kb), который я получаю от галереи, высоты и ширины изображения также сжимаются. Может ли кто-нибудь сказать мне, как я могу решить эту проблему? Я хочу получить изображение в полном размере (полная высота и полная ширина).Когда я сжимаю размер изображения, получающ от gallary, высота и ширина также сжаты

Это код onclick слушателя на изображение:

try { 
    IsProfilePic = 5; 
    usrimage5.setImageBitmap(Bitmap.createScaledBitmap(selectedBitmap, usrimage5.getWidth(), usrimage5.getHeight(), false)); 
    usrimage5.setScaleType(ImageView.ScaleType.FIT_XY); 
    if (usrimage5.getTag() != new Integer(0)) 
    DeleteImageID = usrimage5.getTag().toString(); 
} catch (OutOfMemoryError e) { 
    Log.e("Nithin 5", "" + e.toString()); 
} 

и это код, с помощью которого я сжатия изображения:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
selectedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); 
byte[] byteArray = byteArrayOutputStream.toByteArray(); 
encoded = resizeBase64Image(Base64.encodeToString(byteArray, Base64.DEFAULT)); 

Это метод resizeBase64Image(), что я при изменении размера изображения:

public String resizeBase64Image(String base64image) { 
    byte[] encodeByte = Base64.decode(base64image.getBytes(), Base64.DEFAULT); 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPurgeable = true; 
    Bitmap image = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length, options); 

    if (image.getHeight() <= 400 && image.getWidth() <= 400) { 
     return base64image; 
    } 
    image = Bitmap.createScaledBitmap(image, 400, 400, false); 

    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    image.compress(Bitmap.CompressFormat.PNG, 100, baos); 

    byte[] b = baos.toByteArray(); 
    System.gc(); 
    return Base64.encodeToString(b, Base64.NO_WRAP); 
} 

ответ

0
selectedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream); 

Эта линия приведет к сжатию изображения в MAX качестве, что, вероятно, не является вашей целью. Если вы хотите сжать изображение до более низкого размера (и формат JPEG), установите качество на более низкое значение (Ex: использовать 90 или 80 вместо 100)

image.compress(Bitmap.CompressFormat.PNG, 100, baos); 

Эта линия не будет сжимать изображение, так как PNG представляет собой формат без потерь и будет игнорировать целочисленное значение (здесь вы все равно использовали 100, что является максимальным значением).

image = Bitmap.createScaledBitmap(image, 400, 400, false); 

Это линия, которая масштабирует ваше изображение в более низком размере. Вы можете просто игнорировать этот метод в своем коде, и ваше изображение не будет изменено.

Follow this link, чтобы получить дополнительную информацию об сжатии и масштабировании изображений.