主要思路:
1将指定目录下的文件添加到一个ArrayList中
2通过按钮来控制ArrayList的指针值
3通过将File对象转化为Bitmap对象,然后使用ImageView的setImageBitmap()方法来显示。
首先是布局:
<xml version="10" encoding="utf-8">
<LinearLayout xmlns:android=">
您好,很高兴为您解答:
//根据坐标获取
ImageView imageView = ((ImageView)v);
Bitmap bitmap = ((BitmapDrawable)imageViewgetDrawable())getBitmap();
int pixel = bitmapgetPixel(x,y);
//获取颜色
int redValue = Colorred(pixel);
int blueValue = Colorblue(pixel);
int greenValue = Colorgreen(pixel);
转载,仅供参考,如果我的回答没帮助到您,请继续追问。
imageView = (ImageView) findViewById(RidimageView);
Bitmap rawBitmap = BitmapFactorydecodeResource(getResources(),Rdrawablehaha);
imageViewsetImageBitmap(rawBitmap);
这样就可以从drawable里面加载到bitmap再设置到ImageView了。
//获取connection conn = getURLConnection(url); is = conngetInputStream(); //获取Bitmap的引用 Bitmap bitmap = BitmapFactorydecodeStream(is) //获取长度 int length = (int) conngetContentLength(); if (length != -1) { byte[] imgData = new byte[length]; byte[] temp=new byte[512]; int readLen=0; int destPos=0; while((readLen=isread(temp))>0){ Systemarraycopy(temp, 0, imgData, destPos, readLen); destPos+=readLen; } bitmap=BitmapFactorydecodeByteArray(imgData, 0, imgDatalength); }可能想得不是很完善,你可以参考参考。
ImageView mImageView = (ImageView)findViewById(Riditem_image); mImageViewsetImageBitmap(Bitmap);
很多人在android开发中都遇到了生成bitmap时候内存溢出,也就是out of memory(OOM)的问题,网上对这样的问题的的解决说法不一。笔者作为一个初级开发者,在这里向大家提供一种比较实用,比较易于理解的方法,这种方法不如一些高级开发者提出的方案来的深刻,但是也能帮助大家有效地解决问题。
废话不多说了,直接上代码。
Java代码
BitmapFactoryOptions opt = new BitmapFactoryOptions();
//这个isjustdecodebounds很重要
optinJustDecodeBounds = true;
bm = BitmapFactorydecodeFile(absolutePath, opt);
int picWidth = optoutWidth;
int picHeight = optoutHeight;
//获取屏的宽度和高度
WindowManager windowManager = getWindowManager();
Display display = windowManagergetDefaultDisplay();
int screenWidth = displaygetWidth();
int screenHeight = displaygetHeight();
//isSampleSize是表示对的缩放程度,比如值为2的宽度和高度都变为以前的1/2
optinSampleSize = 1;
//根据屏的大小和大小计算出缩放比例
if(picWidth > picHeight){
if(picWidth > screenWidth)
optinSampleSize = picWidth/screenWidth;
}
else{
if(picHeight > screenHeight)
optinSampleSize = picHeight/screenHeight;
}
//这次再真正地生成一个有像素的,经过缩放了的bitmap
optinJustDecodeBounds = false;
bm = BitmapFactorydecodeFile(absolutePath, opt);
//用imageview显示出bitmap
ivsetImageBitmap(bm);
BitmapFactoryOptions opt = new BitmapFactoryOptions();
//这个isjustdecodebounds很重要
optinJustDecodeBounds = true;
bm = BitmapFactorydecodeFile(absolutePath, opt);
//获取到这个的原始宽度和高度
int picWidth = optoutWidth;
int picHeight = optoutHeight;
//获取屏的宽度和高度
WindowManager windowManager = getWindowManager();
Display display = windowManagergetDefaultDisplay();
int screenWidth = displaygetWidth();
int screenHeight = displaygetHeight();
//isSampleSize是表示对的缩放程度,比如值为2的宽度和高度都变为以前的1/2
optinSampleSize = 1;
//根据屏的大小和大小计算出缩放比例
if(picWidth > picHeight){
if(picWidth > screenWidth)
optinSampleSize = picWidth/screenWidth;
}
else{
if(picHeight > screenHeight)
optinSampleSize = picHeight/screenHeight;
}
//这次再真正地生成一个有像素的,经过缩放了的bitmap
optinJustDecodeBounds = false;
bm = BitmapFactorydecodeFile(absolutePath, opt);
//用imageview显示出bitmap
ivsetImageBitmap(bm);
inJustDecodeBounds 的介绍
public boolean inJustDecodeBounds
Since: API Level 1
If set to true, the decoder will return null (no bitmap), but the out fields will still be set, allowing the caller to query the bitmap without having to allocate the memory for its pixels
就是说,如果设置inJustDecodeBounds为true,仍可以获取到bitmap信息,但完全不用分配内存,因为没有获取像素,所以我们可以利用得到的Bitmap的大小,重新压缩,然后在内存中生成一个更小的Bitmap,这样即便是一个4MB的JPG,我们也可以随心所欲地把他压缩到任意大小,从而节省了内存,看到这里是不是恍然大悟,牛b了牛b了!
下面这个参数就是跟压缩有关的部分,很容易懂,不多解释了:
inSampleSize 的介绍
public int inSampleSize
Since: API Level 1
If set to a value > 1, requests the decoder to subsample the original image, returning a smaller image to save memory The sample size is the number of pixels in either dimension that correspond to a single pixel in the decoded bitmap For example, inSampleSize == 4 returns an image that is 1/4 the width/height of the original, and 1/16 the number of pixels Any value
以上就是关于android 图片浏览器全部的内容,包括:android 图片浏览器、如何将bitmapimage转为bitmap、如何获取android界面某一个坐标点的颜色值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)