1. 程式人生 > >Android 圖片壓縮的一些小技巧,以及bitmap和byte[]之間的轉換

Android 圖片壓縮的一些小技巧,以及bitmap和byte[]之間的轉換

對於獲取到的圖片進行壓縮然後上傳,這個事情還是很重要的而且是很實用的。

public byte[] compressBitmap(Bitmap bitmap) {
    ByteArrayOutputStream baos = null;
    try {
        baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
        baos.close();
        BitmapFactory.Options options = new 
BitmapFactory.Options(); options.inJustDecodeBounds = true; byte[] buffer = baos.toByteArray(); BitmapFactory.decodeByteArray(buffer, 0, buffer.length, options); int outWidth = options.outWidth; int scale = outWidth / WIDTH; if (scale > 1) { options.inSampleSize
= scale; options.inJustDecodeBounds = false; Bitmap tempBitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length, options); baos = new ByteArrayOutputStream(); tempBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); baos.close(); } return
baos.toByteArray(); } catch (Exception e) { return null; } finally { try { if (baos != null) { baos.close(); } } catch (IOException e) { return null; } } } public byte[] compressBitmap(byte[] buffer) { if (buffer == null || buffer.length == 0) { return null; } ByteArrayOutputStream baos = null; try { // 只獲取圖片的大小資訊,而不是將整張圖片載入在記憶體中,避免記憶體溢位 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeByteArray(buffer, 0, buffer.length, options); int outWidth = options.outWidth; int scale = outWidth / WIDTH; if (scale > 1) { options.inSampleSize = scale; options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeByteArray(buffer, 0, buffer.length, options); baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); return baos.toByteArray(); } else { return buffer; } } catch (Exception e) { return null; } catch (OutOfMemoryError e) { return null; } finally { try { if (baos != null) { baos.close(); } } catch (IOException e) { return null; } } } public Bitmap compressBitmap(String path) { Bitmap bitmap = null; try { bitmap = BitmapFactory.decodeFile(path); int scale = 1; if(bitmap.getWidth() > bitmap.getHeight()){ //橫向拍攝的照片 scale = bitmap.getHeight() / WIDTH; }else{ //豎屏拍攝的照片 scale = bitmap.getWidth() / WIDTH; } BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inJustDecodeBounds = false; if (scale > 1) { //壓縮到1/scale opt.inSampleSize = scale; bitmap = BitmapFactory.decodeFile(path, opt); } else { bitmap = BitmapFactory.decodeFile(path, opt); } } catch (OutOfMemoryError e) { return null; } return bitmap; } public byte[] bitmapToByte(Bitmap bitmap) { ByteArrayOutputStream bos = null; try { if (bitmap == null) { return null; } bos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); return bos.toByteArray(); } catch (Exception e) { return null; } catch (OutOfMemoryError e) { return null; } finally { try { if (bos != null) bos.close(); } catch (IOException e) { return null; } } }

相關推薦

Android 圖片壓縮一些技巧以及bitmapbyte[]之間轉換

對於獲取到的圖片進行壓縮然後上傳,這個事情還是很重要的而且是很實用的。 public byte[] compressBitmap(Bitmap bitmap) { ByteArrayOutputStream baos = null; try {

手機圖片壓縮技巧怎麼壓縮

手機圖片壓縮怎麼操作呢?現在手機拍攝的圖片檔案還是比較大的,想要將這樣的手機圖片壓縮就需要用到壓縮軟體來進行操作,下面小編就為大家操作一下手機圖片壓縮的方法。 操作軟體:迅捷壓縮軟體 1:將壓縮軟體安裝到自己的電腦中,開啟軟體找到圖片壓縮,點選圖片壓縮排入到壓縮的頁面中。 2:在壓

圖片怎麼壓縮大小圖片壓縮技巧

圖片怎麼壓縮大小?現在的圖片解析度很高,也就因為解析度的問題導致圖片會比較大,這些比較大的圖片想壓縮就需要使用壓縮軟體來進行操作,下面小編就為大家介紹一種圖片壓縮大小的方法。 操作軟體:迅捷壓縮軟體 1:將壓縮軟體安裝到自己的電腦中,開啟軟體找到圖片壓縮,點選圖片壓縮排入到壓縮的頁面。

html5的一些技巧持續補充ing

pre 補充 body 小技巧 input log gpo date 自動 HTML <label> 標簽的 for 屬性 用處:項目中常有點擊label標簽自動勾選/取消radio的需求,之前都是js動態實現的啊啊啊,相見恨晚,23333 顯式的聯系:

掌握在線壓縮PDF技巧文件多大都沒事

ont 得到 同事 打開 www 就會 沒事 span 影響 在工作學習中我們經常會將文件保存為PDF格式,從網絡上下載的資料、論文、小說什麽的也基本是PDF格式,不管文件多大,我們用自己的設備查看基本沒啥問題。不過當把文件傳輸給同事、客戶查看時,文件如果太大就會影響傳輸速

Android開發的一些技巧

本篇講述的是Android開發中遇到的一些好用的小技巧,或者一些實用的API,很多人都知道,但也有人不知道,記錄下來,如果能幫助到大家,也是極好的.有些工具和類我也會經常用,所以我會根據自己的想法去寫.有些地方坐在並沒有將這個工具的作用講出來,我會補充上去. 正文: Environ

Android-0. Android Studio的一些技巧

目錄 快速宣告一個區域性變數 快捷鍵ctrl+alt+v,或者選中要生成變數的程式碼: 此操作會快速生成一個區域性變數,如下intent:   選擇勾選上面的Declare final會在變數前面增加final 快速宣告一個成員變數 快捷

java多執行緒的一些技巧白必備!

什麼是多執行緒呢?多執行緒是為了使得多個執行緒並行的工作以完成多項任務,以提高系統的效率。執行緒是在同一時間需要完成多項任務的時候被實現的。 在Java中如何實現執行緒 在Java語言層面上只有兩種實現執行緒的方式。繼承java.lang.Thread類和實現java.lang.Runnab

優雅的使用MacBook(一些技巧你不會知道的)

整理了一些MacBook使用過程中發現的吊炸天的小技巧,我不太相信你都知道。 1.command+delete快速刪除檔案。 媽媽再也不用擔心我用右鍵->刪除這麼low的技能了! 2.shift+option+vol-down微調聲音。 少

Android圖片壓縮終極解決方案是的終極終極終極

沒錯,第一篇技術部落格就給大家帶來一重磅炸彈,絕對實用,圖片壓縮,在這裡你將看到2.5M如何無損的變為200多kb,差不多十分之一吧,重點,請注意重點,無損,無損,無損! 我們開發中常見的就是圖片,當然,平時簡簡單單的顯示什麼的就算了,各種框架給你處理,縮圖啥的都有,那

Android 圖片載入框架 Volley框架原始碼 以及PicassoGlide比較

首先了解一下,它是封裝了HTTPConnection和HTTPClient類的一個框架, 適用於資料量少但是通訊頻繁的情況,如載入圖片; 就拿StringRequest(用來請求字串的)舉例: Volley的順序是 :  Http請求-------再接受響應   只

java中int與byte以及long與byte之間轉換

轉載請註明出處! 做專案時候根據協議在傳送網路流的時候需要將所有int及long轉換成byte,因此寫了以下的轉換方法,希望能幫助到需要的朋友 ^_^ 閒話少說,直接上碼。 public cla

隨便發發,java gb2312與中文字元轉換以及中文Unicode的轉換

/**      * 中文轉Unicode      * @param gbString      * @return      */    public static String UnicodeEncoding(String gbString) {   //gbStri

技巧如何在Label中顯示圖片

技術 body win images att 上下文 判斷 lsp 約束 這個需求其實是有的,比如QQ聊天界面裏面發送的信息,可以用label來顯示文字(也可以用button顯示),但是有時候用戶可能會發送圖片。如果能讓Label遇到文字就顯示文字,遇到圖片就顯示圖片就好了

2018-05-22 CSS 左右布局、左中右布局以及一些技巧

add www. 分享 適應 line -o pad 默認 改變 1、左右布局 如果有以下html結構,設置左右兩欄布局 <div class="parent"> <div class="leftChild"></div> <

PDF轉換圖片技巧快快收藏

有一個 得到 text pan family ora pdf轉圖片 點擊 ati 不論是學習還是工作,我們都會跟各種類型的文檔打交道,時間久了,遇到的問題也會千奇百怪,比如:將PDF轉換成圖片的問題你遇到過嗎?這個時候別慌,多學習一些技能,就能遊刃有余。小編這裏就有一個現成

Android圖片壓縮自己編譯libjpeg

之前的部落格提到過關於圖片壓縮的方法: Android 圖片壓縮,Bitmap優化 基於此so庫寫的一個圖片壓縮框架:https://github.com/JavaNoober/Light Android原生的壓縮方法,不在乎兩種:通過設定simpleSize根據圖片尺寸壓縮

android 圖片壓縮以及其他處理

1、質量壓縮方法 private Bitmap compressImage(Bitmap image) {              ByteArrayOutputStream baos = new ByteArrayOutputStream();         

Luban(魯班) —— Android圖片壓縮工具仿微信朋友圈壓縮策略。

專案描述 目前做App開發總繞不開圖片這個元素。但是隨著手機拍照解析度的提升,圖片的壓縮成為一個很重要的問題。單純對圖片進行裁切,壓縮已經有很多文章介紹。但是裁切成多少,壓縮成多少卻很難控制好,裁切過頭圖片太小,質量壓縮過頭則顯示效果太差。 於是自然想到App巨頭“微信”會是怎麼處理,

bitmap的六種壓縮方式Android圖片壓縮

本文轉載自:http://blog.csdn.net/harryweasley/article/details/51955467 感謝大神總結。 Android中圖片是以bitmap形式存在的,那麼bitmap所佔記憶體,直接影響到了應用所佔記憶體大小,首先要知道bit