import java.io.BufferedOutputStream;
04.import java.io.ByteArrayOutputStream;
05.import java.io.File;
06.import java.io.FileOutputStream;
07.import java.io.IOException;
08.import java.io.InputStream;
09.
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, 0, 0, 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.}
分享到:
相关推荐
5. **BitmapFactory**: 提供了一系列静态方法,用于将各种格式的数据(如:字节数组、文件等)解码成Bitmap对象。 6. **ImageView**: Android提供的视图组件,用于显示图像。在本例中,我们使用ImageView来显示下载...
总结,Android编程中使用Intent传递图片的关键在于将图片转换为字节数组,通过Intent进行传递,然后在接收端再将字节数组还原为Bitmap。这种方法虽然简单,但对图片大小有限制,对于大数据量的图片,应考虑更高效的...
通过以上步骤,我们可以将接收到的RGB数据流转换为Bitmap对象并在Android屏幕上显示。这个过程适用于各种情况,比如解码视频帧、实时图像处理等。对于性能敏感的应用,还可以进一步优化,如使用硬件加速、异步处理等...
在Android开发中,图片资源是应用界面不可或缺的部分。在处理图片资源时,有时我们会遇到`.plist`文件,这种文件格式通常用于存储iOS平台的图像数据,但也可以在Android项目中用到,特别是在处理图片序列或者动画时...
可以使用`BitmapFactory`解析URI,然后将其转换为字节数组: ```java Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImageUri)); ByteArrayOutputStream stream = new...
1. **将图片转换为字节流**:使用`Bitmap.compress()`方法将Bitmap对象转换为JPEG或PNG格式的字节数组。 2. **创建HTTP请求**:使用`HttpURLConnection`或者第三方库如OkHttp、Retrofit等,创建POST请求,设置...
- **ImageView显示**:通过ImageView的`setImageBitmap()`方法展示Bitmap,可设置ScaleType调整显示方式。 - **自定义View**:在自定义View中,可以通过onDraw()方法直接绘制Bitmap。 5. **Bitmap操作** - **...
调用`Bitmap`对象的`compress()`方法,将Bitmap压缩为JPEG或PNG格式的字节数组。例如: ```java ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap....
保存图片时,将Bitmap对象转换为字节数组,然后写入到文件中。这样,下次需要显示同一张图片时,可以从本地直接读取,而无需再次联网。 在Android中,显示Bitmap图片通常使用`ImageView`组件。通过设置`ImageView`...
传递User对象的步骤与传递Bitmap类似,只是我们将对象转换为字节数组,然后在另一个Activity中反序列化恢复。 ```java // 在源Activity中 User user = new User("John Doe", 30); Intent intent = new Intent(this,...
在Android开发中,Bitmap是用于处理图像的基本类,它提供了图片的加载、显示、缩放、旋转等操作。Bitmap对象代表了图片像素的数据,而Matrix则是一个二维变换矩阵,可以用来对Bitmap进行复杂的几何变换,如缩放、...
- **转换为二进制数据**:将图片转换成字节数组,然后存储在BLOB(Binary Large Object)类型的字段中。使用`Bitmap.compress(Bitmap.CompressFormat, quality, stream)`方法将Bitmap转换为字节流。 - **文件路径...
当我们有一个Bitmap对象,需要将其设置为ImageView或者其它可显示图像的组件时,通常会将其转换为Drawable。这个过程相对简单,因为BitmapDrawable是Drawable的一个子类,可以直接创建一个新的BitmapDrawable对象,...
- 在给定的代码示例中,`NetTool.getImage()`方法获取网络图片的字节数组,然后在主线程中使用`BitmapFactory.decodeByteArray()`将其转换为Bitmap。 5. **显示Bitmap**: - `ImageView`是Android中用于显示图像...
BufferedInputStream提高读取效率,ByteArrayOutputStream用于接收数据并转换为字节数组。 ```java BufferedInputStream bis = new BufferedInputStream(in); ByteArrayOutputStream baos = new ...
保存Bitmap到本地文件,你需要先创建一个File对象表示存储路径,然后使用Bitmap的compress()方法将其转换为JPEG或PNG格式的字节数组,最后写入文件。确保你有写入外部存储的权限(READ_EXTERNAL_STORAGE和WRITE_...
首先,将`Bitmap`转换成字节数组,然后作为请求体的一部分发送。 5. **PHP端处理**: 服务器端的PHP代码(如AppController.php)接收到请求后,需要读取上传的图片数据,通常是从`$_FILES`全局变量中获取。使用`...
在Android开发中,Bitmap对象是消耗内存的主要因素之一,尤其在处理大图或者大量图片时,容易引发“Out of Memory”(简称OOM)错误。为了避免这种情况,开发者需要掌握如何有效地管理和压缩Bitmap,以优化内存使用...
解析步骤通常涉及将下载的字节数据转换成Android可以显示的Bitmap对象。Glide会根据图片的不同格式,使用不同的解析器。例如,对于JPEG图片,会使用ImageHeaderParser解析图片的头信息,然后用解码器(如...