android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte

简介:

http://blog.csdn.net/z104207/article/details/6634774


[java]  view plain copy
  1. package com.bingo.util;  
  2.   
  3. import java.io.BufferedOutputStream;  
  4. import java.io.ByteArrayOutputStream;  
  5. import java.io.File;  
  6. import java.io.FileOutputStream;  
  7. import java.io.IOException;  
  8. import java.io.InputStream;  
  9.   
  10. import android.graphics.Bitmap;  
  11. import android.graphics.BitmapFactory;  
  12. import android.graphics.Matrix;  
  13.   
  14. public class ImageDispose {  
  15.       
  16.       
  17.       
  18.     /** 
  19.      * @param 将图片内容解析成字节数组 
  20.      * @param inStream 
  21.      * @return byte[] 
  22.      * @throws Exception 
  23.      */  
  24.     public static byte[] readStream(InputStream inStream) throws Exception {  
  25.         byte[] buffer = new byte[1024];  
  26.         int len = -1;  
  27.         ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
  28.         while ((len = inStream.read(buffer)) != -1) {  
  29.             outStream.write(buffer, 0, len);  
  30.         }  
  31.         byte[] data = outStream.toByteArray();  
  32.         outStream.close();  
  33.         inStream.close();  
  34.         return data;  
  35.   
  36.     }  
  37.     /** 
  38.      * @param 将字节数组转换为ImageView可调用的Bitmap对象 
  39.      * @param bytes 
  40.      * @param opts 
  41.      * @return Bitmap 
  42.      */  
  43.     public static Bitmap getPicFromBytes(byte[] bytes,  
  44.             BitmapFactory.Options opts) {  
  45.         if (bytes != null)  
  46.             if (opts != null)  
  47.                 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length,  
  48.                         opts);  
  49.             else  
  50.                 return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);  
  51.         return null;  
  52.     }  
  53.     /** 
  54.      * @param 图片缩放 
  55.      * @param bitmap 对象 
  56.      * @param w 要缩放的宽度 
  57.      * @param h 要缩放的高度 
  58.      * @return newBmp 新 Bitmap对象 
  59.      */  
  60.     public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h){  
  61.         int width = bitmap.getWidth();  
  62.         int height = bitmap.getHeight();  
  63.         Matrix matrix = new Matrix();  
  64.         float scaleWidth = ((float) w / width);  
  65.         float scaleHeight = ((float) h / height);  
  66.         matrix.postScale(scaleWidth, scaleHeight);  
  67.         Bitmap newBmp = Bitmap.createBitmap(bitmap, 00, width, height,  
  68.                 matrix, true);  
  69.         return newBmp;  
  70.     }  
  71.       
  72.     /** 
  73.      * 把Bitmap转Byte 
  74.      * @Author HEH 
  75.      * @EditTime 2010-07-19 上午11:45:56 
  76.      */  
  77.     public static byte[] Bitmap2Bytes(Bitmap bm){  
  78.         ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  79.         bm.compress(Bitmap.CompressFormat.PNG, 100, baos);  
  80.         return baos.toByteArray();  
  81.     }  
  82.     /** 
  83.      * 把字节数组保存为一个文件 
  84.      * @Author HEH 
  85.      * @EditTime 2010-07-19 上午11:45:56 
  86.      */  
  87.     public static File getFileFromBytes(byte[] b, String outputFile) {  
  88.         BufferedOutputStream stream = null;  
  89.         File file = null;  
  90.         try {  
  91.             file = new File(outputFile);  
  92.             FileOutputStream fstream = new FileOutputStream(file);  
  93.             stream = new BufferedOutputStream(fstream);  
  94.             stream.write(b);  
  95.         } catch (Exception e) {  
  96.             e.printStackTrace();  
  97.         } finally {  
  98.             if (stream != null) {  
  99.                 try {  
  100.                     stream.close();  
  101.                 } catch (IOException e1) {  
  102.                     e1.printStackTrace();  
  103.                 }  
  104.             }  
  105.         }  
  106.         return file;  
  107.     }  
  108.           
  109. }  


相关文章
|
12月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
9月前
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
427 3
Android利用selector(选择器)实现图片动态点击效果
|
9月前
|
Java Android开发
Android图片的手动放大缩小
本文介绍了通过缩放因子实现图片放大缩小的功能,效果如动图所示。关键步骤包括:1) 在布局文件中设置 `android:scaleType="matrix"`;2) 实例化控件并用 `ScaleGestureDetector` 处理缩放手势;3) 使用 `Matrix` 对图片进行缩放处理。为避免内存崩溃,可在全局配置添加 `android:largeHeap="true"`。代码中定义了 `beforeScale` 和 `nowScale` 变量控制缩放范围,确保流畅体验。
299 8
|
9月前
|
缓存 编解码 Android开发
Android内存优化之图片优化
本文主要探讨Android开发中的图片优化问题,包括图片优化的重要性、OOM错误的成因及解决方法、Android支持的图片格式及其特点。同时介绍了图片储存优化的三种方式:尺寸优化、质量压缩和内存重用,并详细讲解了相关的实现方法与属性。此外,还分析了图片加载优化策略,如异步加载、缓存机制、懒加载等,并结合多级缓存流程提升性能。最后对比了几大主流图片加载框架(Universal ImageLoader、Picasso、Glide、Fresco)的特点与适用场景,重点推荐Fresco在处理大图、动图时的优异表现。这些内容为开发者提供了全面的图片优化解决方案。
362 1
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
3303 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
11月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
421 15
|
11月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
12月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
347 4
|
Serverless 对象存储 人工智能
智能文件解析:体验阿里云多模态信息提取解决方案
在当今数据驱动的时代,信息的获取和处理效率直接影响着企业决策的速度和质量。然而,面对日益多样化的文件格式(文本、图像、音频、视频),传统的处理方法显然已经无法满足需求。
481 4
智能文件解析:体验阿里云多模态信息提取解决方案
|
12月前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。

推荐镜像

更多
  • DNS