成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Drawable與 Bitmap 轉(zhuǎn)換總結(jié)

snifes / 1467人閱讀

摘要:進(jìn)行縮放然后比對(duì)進(jìn)行縮放調(diào)用中轉(zhuǎn)換成創(chuàng)建操作圖片用的對(duì)象計(jì)算縮放比例設(shè)置縮放比例建立新的,其內(nèi)容是對(duì)原的縮放后的圖至此,本篇已結(jié)束,如有不對(duì)的地方,歡迎您的建議與指正。同時(shí)期待您的關(guān)注,感謝您的閱讀,謝謝

極力推薦文章:歡迎收藏
Android 干貨分享

閱讀五分鐘,每日十點(diǎn),和您一起終身學(xué)習(xí),這里是程序員Android

Drawable 使用方法詳解請(qǐng)看上篇文章.
Drawable 使用方法詳解

本篇文章主要介紹 Android 開(kāi)發(fā)中的部分知識(shí)點(diǎn),通過(guò)閱讀本篇文章,您將收獲以下內(nèi)容:

從資源中獲取Bitmap

Bitmap ----> byte[]

byte[] ----> Bitmap

Bitmap 縮放方法

Drawable ----> Bitmap

圓角圖片

獲取帶倒影的圖片

bitmap ----> Drawable

drawable縮放 ,先轉(zhuǎn) bitmap 后縮放

1. 從資源中獲取Bitmap
    // 1.從資源中獲取Bitmap
    public void UseBitmap(Context context, ImageView imageView, int drawableId) {

        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),
                drawableId);
        imageView.setImageBitmap(bitmap);

    }
2. Bitmap ----> byte[]
    // 2.Bitmap ---> byte[]
    public byte[] BitmapToBytes(Bitmap bitmap) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
        return baos.toByteArray();
    }
3. byte[] ----> Bitmap
    // 3.byte[] ---->bitmap
    public Bitmap BytesToBitmap(byte[] b) {
        if (b.length != 0) {
            return BitmapFactory.decodeByteArray(b, 0, b.length);
        } else {
            return null;
        }
    }
4. Bitmap 縮放方法
    // 4.Bitmap 縮放方法
    public static Bitmap ZoomBitmap(Bitmap bitmap, int width, int heigh) {
        int w = bitmap.getWidth();
        int h = bitmap.getHeight();
        Matrix matrix = new Matrix();
        float scalewidth = (float) width / w;
        float scaleheigh = (float) heigh / h;
        matrix.postScale(scalewidth, scaleheigh);
        Bitmap newBmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
        return newBmp;

    }
5. Drawable ----> Bitmap
    // 5. Drawable----> Bitmap
    public static Bitmap DrawableToBitmap(Drawable drawable) {

        // 獲取 drawable 長(zhǎng)寬
        int width = drawable.getIntrinsicWidth();
        int heigh = drawable.getIntrinsicHeight();

        drawable.setBounds(0, 0, width, heigh);

        // 獲取drawable的顏色格式
        Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
                : Bitmap.Config.RGB_565;
        // 創(chuàng)建bitmap
        Bitmap bitmap = Bitmap.createBitmap(width, heigh, config);
        // 創(chuàng)建bitmap畫布
        Canvas canvas = new Canvas(bitmap);
        // 將drawable 內(nèi)容畫到畫布中
        drawable.draw(canvas);
        return bitmap;
    }
6. 圓角圖片

-實(shí)現(xiàn)效果如下:

實(shí)現(xiàn)代碼如下:

    // 6.圓角圖片
    public static Bitmap SetRoundCornerBitmap(Bitmap bitmap, float roundPx) {
        int width = bitmap.getWidth();
        int heigh = bitmap.getHeight();
        // 創(chuàng)建輸出bitmap對(duì)象
        Bitmap outmap = Bitmap.createBitmap(width, heigh,
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(outmap);
        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, width, heigh);
        final RectF rectf = new RectF(rect);
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectf, roundPx, roundPx, paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);

        return outmap;
    }
7. 獲取帶倒影的圖片

實(shí)現(xiàn)效果如下:

實(shí)現(xiàn)代碼如下:

    // 7.獲取帶倒影的圖片
    public static Bitmap CreateReflectionImageWithOrigin(Bitmap bitmap) {

        final int reflectionGap = 4;
        int w = bitmap.getWidth();
        int h = bitmap.getHeight();
        Matrix matrix = new Matrix();
        matrix.preScale(1, -1);

        Bitmap reflectionImage = Bitmap.createBitmap(bitmap, 0, h / 2, w,
                h / 2, matrix, false);

        Bitmap bitmapWithReflection = Bitmap.createBitmap(w, (h + h / 2),
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmapWithReflection);
        canvas.drawBitmap(bitmap, 0, 0, null);
        Paint deafalutPaint = new Paint();
        canvas.drawRect(0, h, w, h + reflectionGap, deafalutPaint);

        canvas.drawBitmap(reflectionImage, 0, h + reflectionGap, null);

        Paint paint = new Paint();
        LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,
                bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff,
                0x00ffffff, Shader.TileMode.CLAMP);
        paint.setShader(shader);
        // Set the Transfer mode to be porter duff and destination in
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
        // Draw a rectangle using the paint with our linear gradient
        canvas.drawRect(0, h, w, bitmapWithReflection.getHeight()
                + reflectionGap, paint);
        return bitmapWithReflection;
    }
8. bitmap ----> Drawable
    // 8. bitmap ---Drawable
    public static Drawable BitmapToDrawable(Bitmap bitmap, Context context) {
        BitmapDrawable drawbale = new BitmapDrawable(context.getResources(),
                bitmap);
        return drawbale;
    }
9. drawable縮放 ,先轉(zhuǎn) bitmap 后縮放

drawable縮放 ,先轉(zhuǎn) bitmap,調(diào)用 5中的方法 后縮放。

    // 9. drawable進(jìn)行縮放 ---> bitmap 然后比對(duì)bitmap進(jìn)行縮放
    public static Drawable ZoomDrawable(Drawable drawable, int w, int h) {
        int width = drawable.getIntrinsicWidth();
        int height = drawable.getIntrinsicHeight();
        // 調(diào)用5 中 drawable轉(zhuǎn)換成bitmap
        Bitmap oldbmp = DrawableToBitmap(drawable);

        // 創(chuàng)建操作圖片用的Matrix對(duì)象
        Matrix matrix = new Matrix();
        // 計(jì)算縮放比例
        float sx = ((float) w / width);
        float sy = ((float) h / height);
        // 設(shè)置縮放比例
        matrix.postScale(sx, sy);
        // 建立新的bitmap,其內(nèi)容是對(duì)原bitmap的縮放后的圖
        Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height,
                matrix, true);
        return new BitmapDrawable(newbmp);
    }

至此,本篇已結(jié)束,如有不對(duì)的地方,歡迎您的建議與指正。同時(shí)期待您的關(guān)注,感謝您的閱讀,謝謝!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75828.html

相關(guān)文章

  • Drawable 使用詳解

    摘要:?jiǎn)⒂没蛲S梦粓D過(guò)濾。當(dāng)位圖收縮或拉伸以使其外觀平滑時(shí)使用過(guò)濾。在每個(gè)狀態(tài)變更期間,將從上到下遍歷狀態(tài)列表,并使用第一個(gè)與當(dāng)前狀態(tài)匹配的項(xiàng)目此選擇并非基于最佳匹配,而是選擇符合狀態(tài)最低條件的第一個(gè)項(xiàng)目。每個(gè)可繪制對(duì)象由單一元素內(nèi)的元素表示。 showImg(https://segmentfault.com/img/remote/1460000019975019?w=157&h=54); ...

    JinB 評(píng)論0 收藏0
  • ImageView 使用詳解

    極力推薦文章:歡迎收藏Android 干貨分享 showImg(https://segmentfault.com/img/remote/1460000019975020); 閱讀五分鐘,每日十點(diǎn),和您一起終身學(xué)習(xí),這里是程序員Android 本篇文章主要介紹 Android 開(kāi)發(fā)中的部分知識(shí)點(diǎn),通過(guò)閱讀本篇文章,您將收獲以下內(nèi)容: 一、ImageView 的繼承關(guān)系二、ImageView 常用方...

    shery 評(píng)論0 收藏0
  • Android性能優(yōu)化之內(nèi)存優(yōu)化

    摘要:導(dǎo)語(yǔ)智能手機(jī)發(fā)展到今天已經(jīng)有十幾個(gè)年頭,手機(jī)的軟硬件都已經(jīng)發(fā)生了翻天覆地的變化,特別是陣營(yíng),從一開(kāi)始的一兩百到今天動(dòng)輒,內(nèi)存。恰好最近做了內(nèi)存優(yōu)化相關(guān)的工作,這里也對(duì)內(nèi)存優(yōu)化相關(guān)的知識(shí)做下總結(jié)。 導(dǎo)語(yǔ) 智能手機(jī)發(fā)展到今天已經(jīng)有十幾個(gè)年頭,手機(jī)的軟硬件都已經(jīng)發(fā)生了翻天覆地的變化,特別是Android陣營(yíng),從一開(kāi)始的一兩百M(fèi)到今天動(dòng)輒4G,6G內(nèi)存。然而大部分的開(kāi)發(fā)者觀看下自己的異常上報(bào)系...

    cheng10 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<