Android में बिटमैप का आकार कैसे बदलें?




bitmap base64 (9)

किसी भी प्रदर्शन आकार के आधार पर बिटमैप का आकार बदलें

public Bitmap bitmapResize(Bitmap imageBitmap) {

    Bitmap bitmap = imageBitmap;
    float lengthbmp = bitmap.getHeight();
    float widthbmp = bitmap.getWidth();

    // Get Screen width
    DisplayMetrics displaymetrics = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    float hight = displaymetrics.heightPixels / 3;
    float width = displaymetrics.widthPixels / 3;

    int convertHighet = (int) hight, convertWidth = (int) width;

    // high length
    if (lengthbmp > hight) {
        convertHighet = (int) hight - 20;
        bitmap = Bitmap.createScaledBitmap(bitmap, convertWidth,
                convertHighet, true);
    }

    // high width
    if (widthbmp > width) {
        convertWidth = (int) width - 20;
        bitmap = Bitmap.createScaledBitmap(bitmap, convertWidth,
                convertHighet, true);
    }

    return bitmap;
}

मेरे पास मेरे रिमोट डेटाबेस से बेस 64 स्ट्रिंग का एक बिटमैप लिया गया है, ( encodedImage इमेज बेस 64 के साथ छवि का प्रतिनिधित्व करने वाली स्ट्रिंग है):

profileImage = (ImageView)findViewById(R.id.profileImage);

byte[] imageAsBytes=null;
try {
    imageAsBytes = Base64.decode(encodedImage.getBytes());
} catch (IOException e) {e.printStackTrace();}

profileImage.setImageBitmap(
    BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);

प्रोफाइल छवि मेरा ImageView है

ठीक है, लेकिन मुझे अपने ImageView के मेरे ImageView पर इसे दिखाने से पहले इस छवि का आकार बदलना होगा। मुझे इसे 120x120 में आकार बदलना है।

क्या कोई मुझे कोड का आकार बदलने के लिए बता सकता है?

मुझे मिले उदाहरणों को बेसमैप प्राप्त बेस 64 स्ट्रिंग पर लागू नहीं किया जा सका।


इस कोड को आजमाएं

BitmapDrawable drawable = (BitmapDrawable) imgview.getDrawable();
Bitmap bmp = drawable.getBitmap();
Bitmap b = Bitmap.createScaledBitmap(bmp, 120, 120, false);

मुझे उम्मीद है कि यह उपयोगी है।



किसी ने पूछा कि इस स्थिति में पहलू अनुपात कैसे बनाए रखें:

स्केलिंग के लिए उपयोग किए जा रहे कारक की गणना करें और दोनों आयामों के लिए इसका उपयोग करें। आइए मान लें कि आप छवि को ऊंचाई में स्क्रीन का 20% होना चाहते हैं

int scaleToUse = 20; // this will be our percentage
Bitmap bmp = BitmapFactory.decodeResource(
    context.getResources(), R.drawable.mypng);
int sizeY = screenResolution.y * scaleToUse / 100;
int sizeX = bmp.getWidth() * sizeY / bmp.getHeight();
Bitmap scaled = Bitmap.createScaledBitmap(bmp, sizeX, sizeY, false);

स्क्रीन रिज़ॉल्यूशन प्राप्त करने के लिए आपके पास यह समाधान है: पिक्सेल में स्क्रीन आयाम प्राप्त करें


पहलू अनुपात को बनाए रखते हुए लक्ष्य अधिकतम आकार और चौड़ाई के साथ बिटमैप स्केल करें:

int maxHeight = 2000;
int maxWidth = 2000;    
float scale = Math.min(((float)maxHeight / bitmap.getWidth()), ((float)maxWidth / bitmap.getHeight()));

Matrix matrix = new Matrix();
matrix.postScale(scale, scale);

bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

यदि आपके पास पहले से बिटमैप है, तो आप आकार बदलने के लिए निम्न कोड का उपयोग कर सकते हैं:

Bitmap originalBitmap = <original initialization>;
Bitmap resizedBitmap = Bitmap.createScaledBitmap(
    originalBitmap, newWidth, newHeight, false);

  public Bitmap scaleBitmap(Bitmap mBitmap) {
        int ScaleSize = 250;//max Height or width to Scale
        int width = mBitmap.getWidth();
        int height = mBitmap.getHeight();
        float excessSizeRatio = width > height ? width / ScaleSize : height / ScaleSize;
         Bitmap bitmap = Bitmap.createBitmap(
                mBitmap, 0, 0,(int) (width/excessSizeRatio),(int) (height/excessSizeRatio));
        //mBitmap.recycle(); if you are not using mBitmap Obj
        return bitmap;
    }

profileImage.setImageBitmap(
    Bitmap.createScaledBitmap(
        BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length), 
        80, 80, false
    )
);

public static Bitmap resizeBitmapByScale(
            Bitmap bitmap, float scale, boolean recycle) {
        int width = Math.round(bitmap.getWidth() * scale);
        int height = Math.round(bitmap.getHeight() * scale);
        if (width == bitmap.getWidth()
                && height == bitmap.getHeight()) return bitmap;
        Bitmap target = Bitmap.createBitmap(width, height, getConfig(bitmap));
        Canvas canvas = new Canvas(target);
        canvas.scale(scale, scale);
        Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.DITHER_FLAG);
        canvas.drawBitmap(bitmap, 0, 0, paint);
        if (recycle) bitmap.recycle();
        return target;
    }
    private static Bitmap.Config getConfig(Bitmap bitmap) {
        Bitmap.Config config = bitmap.getConfig();
        if (config == null) {
            config = Bitmap.Config.ARGB_8888;
        }
        return config;
    }




base64