当前位置:首页 » 安卓系统 » bytebitmapandroid

bytebitmapandroid

发布时间: 2023-09-01 05:51:13

1. Android Byte[]数组转Bitmap时图像失真,有些花 请问怎么解决 急急急 !! 求大神

你把转换前后的值都用System.out()输出来,查看一下数值有没有变化

2. android如何把byte数据存到内存中并转为bitmap,求高手~~~~~~~~~~~~~~~~~~~~~~~~~~~

import java.io.File;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;

public class MainAct extends Activity {
private ImageView img;
//图片路径
private String filepath = "/sdcard/sample.jpg";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
img = (ImageView) findViewById(R.id.img);
File file = new File(filepath);
if (file.exists()) {
Bitmap bm = BitmapFactory.decodeFile(filepath);
//将图片显示到ImageView中
img.setImageBitmap(bm);
}
}
}

请参考

3. 怎么给bitmap赋值 android

Bitmap是Android系统中的图像处理的最重要的类之一。用它可以获取图像文件信息,对图像进行旋转,剪切,放大,缩小等操作。

Bitmap代表一张位图,使我们在开发中常用的资源,下面就对Bitmap进行简单的介绍。

Bitmap的获取方法:

1、使用BitmapDrawable

BitmapDrawable里封装的图片就是一个Bitmap对象,我们要把Bitmap包装成BitmapDrawable对象,可以调用BitmapDrawable的构造方法:

BItmapDrawbale drawable = new BItmapDrawable(bitmap);

如果要获取BitmapDrawable所包装的Bitmap对象,则可调用BitmapDrawable的getBitmap()方法:

Bitmap bitmap = drawbale.getBitmap();

2、Bitmap提供了一些静态方法来创建Bitmap对象(仅列举几个):

createBitmap(Bitmap source,int x,int y,int width,int height):从原位图source的指定坐标(x,y)开始,从中挖取宽width,高heigtht的一块出来,创建新的Bitmap对象。

createScaledBitmap(Bitmap source,int width,ing height,boolean fliter):对源位图进行缩放,缩放称宽width,高heigth的新位图。

createBitmap(int width,int height,Bitmap.Config config):创建一个宽width,高height的可变的新位图。

createBitmap(Bitmap source, int x,int y,int width,int height ,Matrix m,boolean fliter):从源位图source的指定坐标(x,y)开始,挖取宽width,高height的一块来,创建新的Bitmap对象,并按照Matrix指定的规则进行变换。

3、通过对资源文件的解析获取Bitmap对象

在这里就要用到BitmapFactory这个工具类,提供的方法如下:

decodeByteArray(byte[] data, int offset,int length):从指定字节数组的offset位置开始,将长度为length的字节数据解析成Bitmap对象。

decodeFIle(String pathName):从pathName指定的文件中解析、创建Bitmap对象。

decodeFileDescriptor(FileDescriptor fd):用于从FileDescriptor对应的文件中解析、创建Bitmap对象。

decodeResource(Resource res,int id):用于根据给定的资源ID从指定的资源文件中解析、创建Bitmap对象。

decodeStream(InputStream is):用于从指定输入流中介解析、创建Bitmap对象。

但是,在系统不断的解析、创建Bitmap的过程中,可能会由于内存小或其他原因,导致程序运行时发生OutOfMemory错误。

为此,Android为Bitmap提供了内存回收方法:

void recycle():强制回收Bitmap对象。

还有用于判断Bitmap 对象是否被回收的方法:

boolean isRecycle();

如果Android应用需要访问系统相册,都需要借助BitmapFactory解析、创建Bitmap对象。

4 从安卓无忧中看bitmap的几种例子,下面是加载bitmap的例子,可以看里面的源码


如果您对答案满意,请您关注一下名字中微博。

4. Android Bitmap理解

参考:
Android Bitmap 详解:关于 Bitamp 你所要知道的一切

Android Bitmap(位图)详解

图片是由大量且有限个数的像素点组成。把一张图片通过bitmap的方式创建到内存中,实际上就是在内存中创建了一个叫做Bitmap的对象,然后把 图片所有像素 解码后的数据存放在Bitmap对象里面,Bitmap就拥有了图片的宽高,透明度,颜色值等数据。所以Bitmap的创建是通过BitmapFactory.decodeXxx()。

Config是Bitmap类中的枚举类。像素由ARGB四个颜色通道组成。Config描述位图中像素的存储方式。 这里的存储方式,无非就是对颜色通道和用多大的容器(bit)来存储的排列组合。所以config会影响图片透明度,占用内存大小,保存成文件的大小,图片质量。
Config的字母表示该配置存储的像素的颜色通道,数字表示对应通道的数据用多少位来存储。

ALPHA_8:表示只存储alpha通道,使用8bit(1字节)的内存(容器)来存储一个像素。
RGB_565:表示存储RGB三个通道,分别使用5bit,6bit,5bit的内存(容器)来存储一个像素。
ARGB_4444:表示存储ARGB四个通道,每个通道都是以4bit的内存(容器)来存储一个像素。
ARGB_8888:表示存储ARGB四个通道,每个通道都是以8bit的内存(容器)来存储一个像素。

所以,ARGB_8888配置占用内存最大,图片质量最高。
图片压缩的一个思路就是降低图片的配置。

总内存 = 宽的像素数 × 高的像素数 × 每个像素点占用的大小
注:
1 byte = 8 bit
1 KB = 1024 byte

5. android bitmap怎么转byte数组

ByteArrayOutputStreamstream=newByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG,100,stream);
byte[]byteArray=stream.toByteArray();

6. android byte[]转化成bitmap 发生了错误,要如何解决呢大神快来呀 高悬赏

建议使用BitmapFactory的其他decode方法,如果是网络读过来的流,最好在本地存成文件缓存,然后通过decodeFileDescriptor方法就没这种问题了。
你可以看一下这里 http://www.thinksaas.cn/group/topic/203384/,也碰到了类似的问题

7. Android ,base64转bitmap

1 把图像文件读如byte数组中。
2 然后调用EncodeBase64函数,把Byte数组传入,函数返回Base64的字符串。
以上即可完成Base64转换。

反方向
1 然后调用DecodeBase64函数,把Byte64字符串传入,函数返回Byte数组。
2 把Bye数组内容写入文件,文件名为bitmap位图的bpm文件即可。

8. 安卓开发,Camera的PreviewCallBack获取的byte[]怎么转为Bitmap

byte[]bb=newbyte[1024];

Bitmapbit=BitmapFactory.decodeByteArray(bb,0,bb.length);

9. Android-Bitmap复用时内存大小计算

主要是Bitmap的这两个方法得到的Bitmap的值,会在内存复用体现。
如果不使用内存复用,这两个方法是一样的效果。

在通过复用 Bitmap 来解码图片时,那么 getByteCount() 表示新解码图片占用内存的大 小,getAllocationByteCount() 表示被复用 Bitmap真实占用的内存大小。
比如:上面的图片,黑色区域是当前Bitmap对象实际内存占用大小,但是这部分内存中,只有红色区域是新占用的,而其他的区域是可以复用的但是没被复用(即Bitmap中新的图片只是占用了8个大小,但是Bitmap实际大小其实是有20),那么如果使用getByteCount()就只会返回被复用区域的内存大小,所以使用getByteCount()返回内存区域的大小,其实是小于等于实际大小的。
以为你Bitmap占用内存大小,是由最大的图片来决定的,如果放入一张更小的图片,其实并不会减少Bitmap占用的内存大小。
可以认为:
getByteCount()只是图片的大小
getAllocationByteCount()是Bitmap的大小
因为Bitmap可以复用,所以Bitmap可以放入不同的图片,当Bitmap放入更大的图片的时候,就会占用更大的内存,但是这个时候如果对Bitmap对象进行复用,放入一张小图片,并不会改变Bitmap的大小。

热点内容
康佳29寸电视存储器坏怎么代换 发布:2025-02-01 22:40:44 浏览:186
访问的结果 发布:2025-02-01 22:30:12 浏览:175
cmd访问网站 发布:2025-02-01 22:02:45 浏览:440
清除svn缓存 发布:2025-02-01 22:01:04 浏览:945
安卓模拟器怎么用键盘操作 发布:2025-02-01 21:55:24 浏览:808
安卓手机屏幕为什么会变色 发布:2025-02-01 21:55:20 浏览:823
安卓存折怎么看余额 发布:2025-02-01 21:53:34 浏览:770
其他电脑怎么设置访问服务器 发布:2025-02-01 21:34:27 浏览:896
如何敲编程 发布:2025-02-01 21:26:13 浏览:25
微信加密吗 发布:2025-02-01 21:26:07 浏览:43