摘要:進(jìn)行縮放然后比對(duì)進(jìn)行縮放調(diào)用中轉(zhuǎn)換成創(chuàng)建操作圖片用的對(duì)象計(jì)算縮放比例設(shè)置縮放比例建立新的,其內(nèi)容是對(duì)原的縮放后的圖至此,本篇已結(jié)束,如有不對(duì)的地方,歡迎您的建議與指正。同時(shí)期待您的關(guān)注,感謝您的閱讀,謝謝
極力推薦文章:歡迎收藏
Android 干貨分享
Drawable 使用方法詳解請(qǐng)看上篇文章.
Drawable 使用方法詳解
本篇文章主要介紹 Android 開(kāi)發(fā)中的部分知識(shí)點(diǎn),通過(guò)閱讀本篇文章,您將收獲以下內(nèi)容:
1. 從資源中獲取Bitmap從資源中獲取Bitmap
Bitmap ----> byte[]
byte[] ----> Bitmap
Bitmap 縮放方法
Drawable ----> Bitmap
圓角圖片
獲取帶倒影的圖片
bitmap ----> Drawable
drawable縮放 ,先轉(zhuǎn) 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
摘要:?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); ...
極力推薦文章:歡迎收藏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 常用方...
摘要:導(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)系...
閱讀 3334·2021-11-22 12:04
閱讀 2718·2019-08-29 13:49
閱讀 491·2019-08-26 13:45
閱讀 2249·2019-08-26 11:56
閱讀 1007·2019-08-26 11:43
閱讀 601·2019-08-26 10:45
閱讀 1275·2019-08-23 16:48
閱讀 2164·2019-08-23 16:07