{"id":243,"date":"2020-03-23T09:39:25","date_gmt":"2020-03-23T01:39:25","guid":{"rendered":"https:\/\/badgameshow.com\/fly\/?p=243"},"modified":"2020-05-19T14:26:58","modified_gmt":"2020-05-19T06:26:58","slug":"util-%e6%8a%8auri%e8%bd%89%e6%88%90bitmap%e5%a3%93%e7%b8%aebitmap","status":"publish","type":"post","link":"https:\/\/badgameshow.com\/fly\/util-%e6%8a%8auri%e8%bd%89%e6%88%90bitmap%e5%a3%93%e7%b8%aebitmap\/","title":{"rendered":"Util \u628aUri\u8f49\u6210Bitmap&#038;\u58d3\u7e2eBitmap"},"content":{"rendered":"<pre><code class=\"language-Java line-numbers\">import android.app.Activity;\nimport android.content.Context;\nimport android.graphics.Bitmap;\nimport android.graphics.BitmapFactory;\nimport android.net.Uri;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java.io.FileNotFoundException;\nimport java.io.IOException;\nimport java.io.InputStream;\n\npublic class BitmapUtil {\n    public static Bitmap readBitmap(Context context, int resId) {\n        BitmapFactory.Options opt = new BitmapFactory.Options();\n        opt.inPreferredConfig = Bitmap.Config.RGB_565;\n        opt.inPurgeable = true;\n        opt.inInputShareable = true;\n        \/\/ \u7372\u53d6\u8cc7\u6e90\u5716\u7247\n        InputStream is = context.getResources().openRawResource(resId);\n        return BitmapFactory.decodeStream(is, null, opt);\n    }\n\n    public static byte[] bitmapToBytes(Bitmap bm) {\n        ByteArrayOutputStream baos = new ByteArrayOutputStream();\n        bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);\n        return baos.toByteArray();\n    }\n\n    \/**\n     * \u901a\u904euri\u7372\u53d6\u5716\u7247\u4e26\u9032\u884c\u58d3\u7e2e\n     *\/\n    public static Bitmap getBitmapFormUri(Activity ac, Uri uri) throws IOException {\n        InputStream input = ac.getContentResolver().openInputStream(uri);\n        BitmapFactory.Options onlyBoundsOptions = new BitmapFactory.Options();\n        onlyBoundsOptions.inJustDecodeBounds = true;\n        onlyBoundsOptions.inDither = true;\/\/optional\n        onlyBoundsOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;\/\/optional\n        BitmapFactory.decodeStream(input, null, onlyBoundsOptions);\n        input.close();\n        int originalWidth = onlyBoundsOptions.outWidth;\n        int originalHeight = onlyBoundsOptions.outHeight;\n        if ((originalWidth == -1) || (originalHeight == -1))\n            return null;\n        \/\/\u5716\u7247\u5206\u8fa8\u7387\u4ee5480x800\u70ba\u6a19\u6e96\n        float hh = 800f;\/\/\u8a2d\u5b9a\u9ad8\u5ea6\u70ba800f\n        float ww = 480f;\/\/\u8a2d\u5b9a\u5bec\u5ea6\u70ba480f\n        int be = 1;\/\/be=1\u8868\u793a\u4e0d\u7f29\u653e\n        \/\/\u5982\u679c\u5bec\u5ea6\u5927\u7684\u756b\u6839\u64da\u5bec\u5ea6\u56fa\u5b9a\u5927\u5c0f\u7f29\u653e\n        if (originalWidth &gt; originalHeight &amp;&amp; originalWidth &gt; ww) {\n            be = (int) (originalWidth \/ ww);\n        \/\/\u5982\u679c\u9ad8\u5ea6\u9ad8\u7684\u8a71\u6839\u64da\u5bec\u5ea6\u56fa\u5b9a\u5927\u5c0f\u7f29\u653e\n        } else if (originalWidth &lt; originalHeight &amp;&amp; originalHeight &gt; hh) {\n            be = (int) (originalHeight \/ hh);\n        }\n        if (be &lt;= 0)\n            be = 1;\n        \/\/\u6bd4\u4f8b\u58d3\u7e2e\n        BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();\n        bitmapOptions.inSampleSize = be;\/\/\u8a2d\u5b9a\u7f29\u653e\u6bd4\u4f8b\n        bitmapOptions.inDither = true;\/\/optional\n        bitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;\/\/optional\n        input = ac.getContentResolver().openInputStream(uri);\n        Bitmap bitmap = BitmapFactory.decodeStream(input, null, bitmapOptions);\n        input.close();\n\n        return compressImage(bitmap);\/\/\u518d\u9032\u884c\u8cea\u91cf\u58d3\u7e2e\n    }\n\n    \/**\n     * \u8cea\u91cf\u58d3\u7e2e\u65b9\u6cd5\n     *\/\n    public static Bitmap compressImage(Bitmap image) {\n        ByteArrayOutputStream baos = new ByteArrayOutputStream();\n        \/\/\u8cea\u91cf\u58d3\u7e2e\u65b9\u6cd5\uff0c100\u8868\u793a\u4e0d\u58d3\u7e2e\uff0c\u628a\u58d3\u7e2e\u5f8c\u7684\u8cc7\u6599\u5b58\u653e\u5230baos\u4e2d\n        image.compress(Bitmap.CompressFormat.JPEG, 100, baos);\n        int options = 100;\n        \/\/\u5faa\u74b0\u5224\u65b7\u5982\u679c\u538b\u58d3\u7e2e\u5f8c\u5716\u7247\u662f\u5426\u5927\u65bc100kb,\u5927\u65bc\u7e7c\u7e8c\u58d3\u7e2e,\u4e0d\u80fd\u5c0f\u65bc0\n        while (baos.toByteArray().length \/ 1024 &gt; 100  &amp;&amp; options &gt;= 0) {\n            baos.reset();\n            image.compress(Bitmap.CompressFormat.JPEG, options, baos);\n            options -= 10;\/\/\u6bcf\u6b21\u90fd\u51cf\u5c1110\n        }\n        \/\/\u628a\u538b\u7f29\u5f8c\u7684\u8cc7\u6599baos\u5b58\u653e\u5230ByteArrayInputStream\u4e2d\n        ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());\n        \/\/\u628aByteArrayInputStream\u8cc7\u6599\u751f\u6210\u5716\u7247\n        Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);\n        return bitmap;\n    }\n}\n\n<\/code><\/pre>\n\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>import android.app.Activity; import android.content.Con &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[9],"tags":[13,14,16],"class_list":["post-243","post","type-post","status-publish","format-standard","hentry","category-util","tag-android","tag-java","tag-util"],"_links":{"self":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/comments?post=243"}],"version-history":[{"count":3,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/243\/revisions"}],"predecessor-version":[{"id":485,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/243\/revisions\/485"}],"wp:attachment":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/media?parent=243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/categories?post=243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/tags?post=243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}