圖片壓縮android bitmap compress(圖片壓縮)

本文純屬個人見解,是對前面學習的總結,如有描述不正確的地方還請高手指正~

????有些場景中,須要照相并且上傳到服務,但是由于圖片的巨細太大,那么就

????上傳就

????會很慢(在有些網絡情況下),而且很耗流量,要想速度快,那么就須要減小圖片的巨細。減少圖片的巨細有兩種方法,1. 照小圖片; 2. 壓縮大圖片。 照相時獲取小圖片一般不太符合要求,因為,圖片的清晰度會很差,但是這類情況有個好處就是應用速度會快些; 壓縮圖片,就是把大圖片壓縮小,降低圖片的質量,在一定范圍內,降低圖片的巨細,并且滿意需求(圖片仍就清晰)。上面組要是分析圖片的壓縮:

????1. 照相請查看http://blog.csdn.net/luhuajcdd/article/details/8826587 ->

????想要保存圖片到制定目錄,啟動Camera應用時,須要指定文件

????final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, 480, 800); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; Bitmap bm = BitmapFactory.decodeFile(filePath, options);

? ? 2.2 處理圖片旋轉

? ?

????int degree = readPictureDegree(filePath); bm = rotateBitmap(bm,degree) ;

????private static int readPictureDegree(String path) { int degree = 0; try { ExifInterface exifInterface = new ExifInterface(path); int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); switch (orientation) { case ExifInterface.ORIENTATION_ROTATE_90: degree = 90; break; case ExifInterface.ORIENTATION_ROTATE_180: degree = 180; break; case ExifInterface.ORIENTATION_ROTATE_270: degree = 270; break; } } catch (IOException e) { e.printStackTrace(); } return degree; }

每日一道理
如果說友誼是一顆常青樹,那么,澆灌它的必定是出自心田的清泉;如果說友誼是一朵開不敗的鮮花,那么,照耀它的必定是從心中升起的太陽。 多少笑聲都是友誼喚起的,多少眼淚都是友誼揩干的。友誼的港灣溫情脈脈,友誼的清風灌滿征帆。友誼不是感情的投資,它不須要股息和分紅。(友誼可以換其他詞語)

????private static Bitmap rotateBitmap(Bitmap bitmap, int rotate){ if(bitmap == null) return null ; int w = bitmap.getWidth(); int h = bitmap.getHeight(); // Setting post rotate to 90 Matrix mtx = new Matrix(); mtx.postRotate(rotate); return Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, true); }

? ? 2.3壓縮圖片

? ? ? ??

????bm.compress(Bitmap.CompressFormat.JPEG, 30, baos);//30 是壓縮率,表現壓縮70%; 如果不壓縮是100,表現壓縮率為0

????public static Bitmap getSmallBitmap(String filePath) { final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(filePath, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, 480, 800); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; Bitmap bm = BitmapFactory.decodeFile(filePath, options); if(bm == null){ return null; } int degree = readPictureDegree(filePath); bm = rotateBitmap(bm,degree) ; ByteArrayOutputStream baos = null ; try{ baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 30, baos); }finally{ try { if(baos != null) baos.close() ; } catch (IOException e) { e.printStackTrace(); } } return bm ; }

????private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { // Raw height and width of image final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { // Calculate ratios of height and width to requested height and // width final int heightRatio = Math.round((float) height / (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); // Choose the smallest ratio as inSampleSize value, this will // guarantee // a final image with both dimensions larger than or equal to the // requested height and width. inSampleSize = heightRatio < widthRatio ? widthRatio : heightRatio; } return inSampleSize; }

文章結束給大家分享下程序員的一些笑話語錄: 3G普不普及現在已經不是看終端了,而是看應用,有好的,便宜實用的應用,花1000多買個能用的智能手機應該不是什么難事。反過來說,你200元拿一個智能手機,沒有好的應用,看個電影要幾十元,也是沒人用3G。

--------------------------------- 原創文章 By 圖片和壓縮 ---------------------------------

轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/23/3095774.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376653.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376653.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376653.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux進程間通信快速入門【一】:管道編程

介紹 管道本質上就是一個文件&#xff0c;前面的進程以寫方式打開文件&#xff0c;后面的進程以讀方式打開。這樣前面寫完后面讀&#xff0c;于是就實現了通信。雖然實現形態上是文件&#xff0c;但是管道本身并不占用磁盤或者其他外部存儲的空間。在Linux的實現上&#xff0c;…

返回長度hdu 1518 square

查了好多資料&#xff0c;發現還是不全&#xff0c;干脆自己整理吧&#xff0c;至少保證在我的做法正確的&#xff0c;以免誤導讀者&#xff0c;也是給自己做個記載吧&#xff01; 題目的意思是比較明顯的&#xff0c;就是當初給你m根木棒&#xff0c;當初讓你判斷利用這些木棒…

POJ 3233 Matrix Power Series 矩陣快速冪 + 二分

題意&#xff1a;求矩陣的次方和 解題思路&#xff1a;最容易想到方法就是兩次二分因為 我們可以把一段 A^1 A^2 .......A^K 變成 A^1 ..A^(K/2) ( A^1 ..A^(K/2))*(A^(k/2)) 當k 為奇數的時候 或者 A^1 ..A^(K/2) ( A^1 ..A^(K/2))*(A^(k/2)) A^K 當K 為偶數的時候…

時間序列進行分析的一些手法以及代碼實現(移動平均、指數平滑、SARIMA模型、時間序列的(非)線性模型)

文章目錄1、移動平均moving average方法weighted average方法2、指數平滑單指數平滑 exponential_smoothing雙指數平滑三指數平滑 Triple exponential smoothing3、平穩性以及時間序列建模SARIMA模型4、時間序列的&#xff08;非&#xff09;線性模型時間序列的滯后值使用線性回…

政權組織形式

神馬國家結構、政權組織形式的 現在我比較明確的是英國的政權組織形式是式君主立憲制、美國是總統制、中國是人民代表大會制。 目前,世界各國采用的國家結構可分為單一制和復合制兩大類。其中&#xff0c;復合制國家結構形式主要包括聯邦制和邦聯制兩種類型。英國、法國、意大利…

三大平衡樹(Treap + Splay + SBT)總結+模板

Treap樹 核心是 利用隨機數的二叉排序樹的各種操作復雜度平均為O(lgn) Treap模板&#xff1a; #include <cstdio> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <cstdlib> #include <cmath…

mysqld進程 ut_delay 占用率過高

采用性能分析工具perf top -p mysqld進程 在測試mysql數據庫時&#xff0c;用perf top如果看到熱點函數是ut_delay或者_raw_spin_lock的話&#xff0c;說明鎖爭用比較嚴重。 ut_delay這是innodb的一個自旋瑣。也就是說&#xff0c;在這里由于鎖等待&#xff0c;innodb不停地在…

TClientDataSet使用要點

TClientDataSet控件繼承自TDataSet&#xff0c;其數據存儲文件格式擴展名為 .cds&#xff0c;是基于文件型數據存儲和操作的控件。該控件封裝了對數據進行操作處理的接口和功能&#xff0c;而本身并不依賴上述幾種數據庫驅動程序&#xff0c;基本上能滿足單機"瘦"數據…

滑動窗口在重構數據集的作用

step1&#xff1a;使用滑動窗口重構數據集 給定時間序列數據集的數字序列&#xff0c;我們可以將數據重構為看起來像監督學習問題。 我們可以通過使用以前的時間步作為輸入變量并使用下一個時間步作為輸出變量來做到這一點。 通過觀察重構后的數據集與原本的時間序列&…

sliverlight - Unhandled Error in Silverlight Application錯誤

使用firebug控制臺輸出錯誤&#xff1a; Unhandled Error in Silverlight Application 查詢“GetFlow_Process”的 Load 操作失敗。遠程服務器返回了錯誤: NotFound。 位于 System.ServiceModel.DomainServices.Client.OperationBase.Complete(Exception error) 位于 System.S…

前向驗證對于模型的更新作用

首先&#xff0c;讓我們看一個小的單變量時間序列數據&#xff0c;我們將用作上下文來理解這三種回測方法&#xff1a;太陽黑子數據集。該數據集描述了剛剛超過 230 年&#xff08;1749-1983 年&#xff09;觀察到的太陽黑子數量的每月計數。 數據集顯示了季節之間差異很大的…

2014年9月21日_隨筆,jdic,ETL,groovy,Nutz好多東西想學

&#xff08;1&#xff09;老媽十一要回老家&#xff0c;才突然發現買票好難啊。有親朋很重要 &#xff08;2&#xff09;這周我做了什么。jdic,ETL,groovy, Nutz好多東西想學。 Nutz開發成員專訪、Nutz優酷視頻(演講)、Nutz 入門教程、 &#xff08;3&#xff09;想改變&#…

PHP-面向對象(八)

1、多態的介紹與優勢 多態性是繼抽象和繼承后&#xff0c;面向對象語言的第三個特征。從字面上理解&#xff0c;多態的意思是“多種形態”&#xff0c;簡單來說&#xff0c;多態是具有表現多種形態的能力的特征&#xff0c;在OO中是指“語言具有根據對象的類型以不同方式處理。…

雙指數平滑中參數對于預測模型的影響

先看看α 在β一致的情況下&#xff0c;α越小&#xff0c;模型越滯后。 再看看β 在α一致的情況下&#xff0c;β越大&#xff0c;模型對于趨勢的預測更敏銳。

SQL 性能不佳的幾個原因

SQL 性能不佳的幾個原因 ?不準確的統計數據?差勁的索引?差勁的查詢設計 ?差勁的執行計劃&#xff0c;通常是由不正確的參數引起的?過度阻塞和死鎖 ?非基于集合的操作?不良數據庫設計 ?過度碎片 ?不能重復使用執行計劃 ?查詢頻繁重編譯 ?不當使用游標 ?數據庫日志的…

分頁查詢

分頁查詢算是比較常用的一個查詢了在DAO層主要是查兩個數據第一個總條數第二個要查詢起始記錄數到查詢的條數當第一次點擊查詢時候(非下一頁時Page類里面預設的就是 index就是0 pageSize是預設值當點擊下一頁的時候 index 和 pageSize帶的就是頁面上面給的值了分頁的頁面一般的…

TypeError: Object of type ‘datetime‘ is not JSON serializable

python中這個錯誤的原因是json.dumps無法對字典中的datetime時間格式數據進行轉化&#xff0c;dumps的原功能是將dict轉化為str格式&#xff0c;不支持轉化時間. 所以請這樣使用&#xff1a; json.dumps(response_data, defaultstr)

oracle問題

ORA-01031: insufficient privileges 用戶沒有權限&#xff0c;給它賦予角色轉載于:https://www.cnblogs.com/50614090/p/3986880.html

me23n去價格

SELECT knumv kposn AS ebelp kschl kbetr kpein kwert INTO CORRESPONDING FIELDS OF TABLE gt_konv FROM konv FOR ALL ENTRIES IN gt_ekpo WHERE knumv gt_ekpo-knumv AND kinak EQ AND kschl IN (PB00,PBXX,P101).轉載于:…

Fix “Windows cannot access the specified device path or file” Error

http://helpdeskgeek.com/help-desk/windows-cannot-access-the-specified-device-path-or-file/ Method 1 – Windows Server 2003 Terminal Services Firstly, if you’re running into this issue on a Windows Server box running Terminal Services, your problem can be …