当前位置:首页 » 安卓系统 » android缩小图片

android缩小图片

发布时间: 2022-05-18 15:15:39

A. 用安卓手机怎样使照片小于500k

手机上面可以使用美图秀秀来制作。

操作方法:

1、首先,打开手机上面的美图秀秀进入,选择界面上方的图片美化。

B. Android图片压缩与优化的几种方式

1.使用的图片最好用png格式

2.如果你的图片仍然大的话可以在项目里面点击右键选择convert to Webp,转成webp格式图片可以变小很多!

C. android中如何动态修改ImageView中图片的大小 比如说点击该图片后图片能变大

使用位图(Bitmap)再重新绘制遍

//原位图

Bitmap btm1 = BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.hh);

BitmapDrawable bd1=BitmapDrawable(btm1);

imageView.setBackgroundDrawable(bd1);

放大后 滑动时计算 图片的边是否在屏幕外,如果在屏幕外就可移动,比如 向上滑动,是想看图片下面的部分,此时计算图片的底边是否在屏幕外,如果是,就可以向上移动图片。

Scaletype的设置的方式包括:

1、在layout xml中定义android:scaleType="CENTER"

2、或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);

(3)android缩小图片扩展阅读:

根据位深度,可将位图分为1、4、8、16、24及32位图像等。每个像素使用的信息位数越多,可用的颜色就越多,颜色表现就越逼真,相应的数据量越大。

例如,位深度为 1 的像素位图只有两个可能的值(黑色和白色),所以又称为二值位图。位深度为 8 的图像有 2^8(即 256)个可能的值。位深度为 8 的灰度模式图像有 256 个可能的灰色值。

RGB图像由三个颜色通道组成。8 位/通道的 RGB 图像中的每个通道有 256 个可能的值,这意味着该图像有 1600 万个以上可能的颜色值。

有时将带有 8 位/通道 (bpc) 的 RGB 图像称作 24 位图像(8 位 x 3 通道 = 24 位数据/像素)。通常将使用24位RGB组合数据位表示的的位图称为真彩色位图。

D. android 图片质量压缩和尺寸压缩有什么区别

这个方法用来将特定格式的压缩图片写入输出流(OutputStream)中,当然例如输出流与文件联系在一起,压缩后的图片也就是一个文件。如果压缩成功则返回true,其中有三个参数:

format是压缩后的图片的格式,可取值:Bitmap.CompressFormat .JPEG、~.PNG、~.WEBP。

quality的取值范围为[0,100],值越小,经过压缩后图片失真越严重,当然图片文件也会越小。(PNG格式的图片会忽略这个值的设定)

stream指定压缩的图片输出的地方,比如某文件。

上述方法还有一个值得注意的地方是:当用BitmapFactory decode文件时可能返回一个跟原图片不同位深的图片,或者丢失了每个像素的透明值(alpha),比如说,JPEG格式的图片仅仅支持不透明的像素。文章android图片压缩在文末提到的下面这点可能就是这个原因:

当调用bitmap.compress(CompressFormat.JPEG, 100, fos);保存为图片时发现图片背景为黑色,如下图:

下面是质量压缩的代码:

(Bitmapbmp,Filefile){

ByteArrayOutputStreambaos=newByteArrayOutputStream();

intoptions=80;//个人喜欢从80开始,

bmp.compress(Bitmap.CompressFormat.JPEG,options,baos);

while(baos.toByteArray().length/1024>100){

baos.reset();

options-=10;

bmp.compress(Bitmap.CompressFormat.JPEG,options,baos);

}

try{

FileOutputStreamfos=newFileOutputStream(file);

fos.write(baos.toByteArray());

fos.flush();

fos.close();

}catch(Exceptione){

e.printStackTrace();

}

}

这段代码来自Android图片压缩总结,我根据自己的需求改了改,但是大同小异,所以就直接贴了。

随着代码中的option逐渐变小,我们可以在logcat中打印baos的大小来查看图片的大小。我们也可以去掉while的循环条件,一直压缩下去看效果,最终一张照片可能就由原来的3、4M变成了几百K甚至几百B了。我在试的过程中将option设置成100,压缩后偶尔会出现一张3、4M的图片经过压缩后竟变成了6、7M,这里还是有点困惑,不知道为什么。

随后,我想把这个压缩后的图片(1、200KB)填充到ImageView中时却失败了,logcat中提示图片过大!这就是文章开头提到的问题,虽然我们通过质量压缩使File形式的图片文件缩小了,但是并没有改变图片的宽高,原先是1080*1920分辨率的图片经压缩后还是1080*1920,而File格式转换成Bitmap格式进入到内存中时,内存是根据图片的像素数量来给图片分配内存大小的,还是有好几M,因此填充ImageView失败。

顺便提一下,可以用bitmap.getByteCount()获取存储bitmap像素的内存大小,但是KITKAT(Android 4.4版本)以后用getAllocateByteCount()获取。一般情况下,后者返回值比前者大,比如,当bitmap被重用去decode另外更小的bitmaps时,或者被人为地配置一下属性值,比如setWidth()、setHeight()、reconfigure()时,如果bitmap不做以上操作,二者的返回值应该是一样的。(译文,不太懂)

二、尺寸压缩

特点: 通过设置采样率, 减少图片的像素, 达到对内存中的Bitmap进行压缩



我们主要通过BitmapFactory中的decodeFile方法对图片进行尺寸压缩:

publicstaticBitmapdecodeFile(StringpathName,BitmapFactory.Optionsopts)

public static Bitmap decodeFile (String pathName, BitmapFactory.Options opts)

其中有两个参数:

pathName是图片文件的路径。

opts 就是所谓的采样率,它里边有很多属性可以设置,我们通过设置属性来达到根据自己的需要,压缩出指定的图片。其中比较常用的属性有:

booleaninJustDecodeBounds—— 如果设置为true,则只读取bitmap的宽高,而忽略内容。

intinSampleSize—— 如果>1,调用decodeFile方法后,就会得到一个更小的bitmap对象(已压缩)。比如设置为2,那么新Bitmap的宽高都会是原Bitmap宽高的1/2,总体大小自然就是原来的1/4了,以此类推。

booleaninPurgeable—— 如果设置为true,压缩后的图片像素占的内存将会在系统清理内存的时候被回收掉,当像素的信息再次被用到时将会自动重新decode该像素(比如getPixels()时)。(慎用!重复decode可以会造成UI的卡顿,API level 21 已弃用)

booleaninInputShareable—— 与inPurgeable配合使用,如果inPurgeable设置成false,自动忽略此值,如果inPurgeable为true,此值决定是否该bitmap能分享引用给输入数据(inputstream,array等),或者必须进行深拷贝。API level 21 已弃用。(这是译文,不太理解!!!)

下面是一段实现的代码

privateBitmapsizeCompres(Stringpath,intrqsW,intrqsH){

//用option设置返回的bitmap对象的一些属性参数

finalBitmapFactory.Optionsoptions=newBitmapFactory.Options();

options.inJustDecodeBounds=true;//设置仅读取Bitmap的宽高而不读取内容

BitmapFactory.decodeFile(path,options);//获取到图片的宽高,放在option里边

finalintheight=options.outHeight;//图片的高度放在option里的outHeight属性中

finalintwidth=options.outWidth;

intinSampleSize=1;

if(rqsW==0||rqsH==0){

options.inSampleSize=1;

}elseif(height>rqsH||width>rqsW){

finalintheightRatio=Math.round((float)height/(float)rqsH);

finalintwidthRatio=Math.round((float)width/(float)rqsW);

inSampleSize=heightRatio<widthRatio?heightRatio:widthRatio;

options.inSampleSize=inSampleSize;

}

returnBitmapFactory.decodeFile(path,options);//主要通过option里的inSampleSize对原图片进行按比例压缩

}

private Bitmap sizeCompres(String path, int rqsW, int rqsH) {

// 用option设置返回的bitmap对象的一些属性参数

final BitmapFactory.Options options = new BitmapFactory.Options();

options.inJustDecodeBounds = true;// 设置仅读取Bitmap的宽高而不读取内容

BitmapFactory.decodeFile(path, options);// 获取到图片的宽高,放在option里边

final int height = options.outHeight;//图片的高度放在option里的outHeight属性中

final int width = options.outWidth;

int inSampleSize = 1;

if (rqsW == 0 || rqsH == 0) {

options.inSampleSize = 1;

} else if (height > rqsH || width > rqsW) {

final int heightRatio = Math.round((float) height / (float) rqsH);

final int widthRatio = Math.round((float) width / (float) rqsW);

inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;

options.inSampleSize = inSampleSize;

}

return BitmapFactory.decodeFile(path, options);// 主要通过option里的inSampleSize对原图片进行按比例压缩

}

上面就是简单的质量压缩与尺寸压缩。

E. 安卓用什么软件能把图片缩小

美图试试看 有这功能

F. android如何对viewpager里面的图片进行缩放

跟ViewPager没有关系。对图片的操作是ImageView,用Matrix来对图片进行旋转、缩放、平移等操作,查查Matrix和ImageView的相关内容。

G. android bitmap 图片缩放问题

在使用Bitmap进行位图读取和显示的时候需要注意在生成位图时,系统会根据不同的情况来缩小、放大图像。
当把图片放到drawable文件夹中时,160密度的模拟器显示的图像有放大效果,240密度的模拟器显示原尺寸的图像。
当把图片放到drawable-hdpi文件夹中时,160密度的模拟器显示出的图像有缩小效果,240密度的模拟器显示原尺寸的图像。
当把图片放到drawable-mdpi文件夹中时,160密度的模拟器显示原尺寸的图像,240密度的模拟器显示放大的图像。
当把图片放到drawable-ldpi文件夹中时,160、240密度的模拟器都显示放大的图片。
由此可以看出,在使用Bitmap显示图像时,一般应放在drawable-hdpi文件夹中,这样可以根据屏幕的密度来调整图像大小,比如再做游戏时,大屏幕的与小屏幕的手机中,人物或物体应该有大小之分。望求采纳谢谢...

H. android等比例缩放图片的方法

itmap icon = null;//原始图片
int width = icon.getWidth(), height = icon.getHeight();
float scaleRate = 0.8f;//缩小的比例
while(width >= 300 || width >= 300) {
Matrix matrix = new Matrix();
matrix.postScale(width * scaleRate, height * scaleRate);
// 得到新的图片
Bitmap newIcon = Bitmap.createBitmap(icon, 0, 0, width, height, matrix, true);
icon.recycle();
icon = newIcon;
width = icon.getWidth(), height = icon.getHeight();
}int width = icon.getWidth(), height = icon.getHeight();

if(width > 300 || width > 300) {
float scaleRate = width > height ? 300 / width : 300 / height;
Matrix matrix = new Matrix();
matrix.postScale(width * scaleRate, height * scaleRate);
// 得到新的图片
Bitmap newIcon = Bitmap.createBitmap(icon, 0, 0, width, height, matrix, true);
icon.recycle();
icon = newIcon;
}

I. android gallery如何设置图片按比例缩小

private
void
small()
{
int
bmpWidth=bmp.getWidth();
int
bmpHeight=bmp.getHeight();
Log.i(TAG,
"bmpWidth
=
"
+
bmpWidth
+
",
bmpHeight
=
"
+
bmpHeight);
/*
设置图片缩小的比例
*/
double
scale=0.8;
/*
计算出这次要缩小的比例
*/
scaleWidth=(float)
(scaleWidth*scale);
scaleHeight=(float)
(scaleHeight*scale);
/*
产生reSize后的Bitmap对象
*/
Matrix
matrix
=
new
Matrix();
matrix.postScale(scaleWidth,
scaleHeight);
Bitmap
resizeBmp
=
Bitmap.createBitmap(bmp,0,0,bmpWidth,
bmpHeight,matrix,true)

J. android中有方法可以对图片进行缩放吗(不是缩放画布,是真的改变了原来图片的大小)

scaleType:CENTER /center 在视图中心显示图片,并且不缩放图片CENTER_CROP / centerCrop 按比例缩放图片,使得图片长 (宽)的大于等于视图的相应维度CENTER_INSIDE / centerInside 按比例缩放图片,使得图片长 (宽)的小于等于视图的相应维度FIT_CENTER / fitCenter 按比例缩放图片到视图的最小边,居中显示FIT_END / fitEnd 按比例缩放图片到视图的最小边,显示在视图的下部分位置FIT_START / fitStart 把图片按比例扩大/缩小到视图的最小边,显示在视图的上部分位置FIT_XY / fitXY 把图片不按比例缩放到视图的大小显示MATRIX / matrix 用矩阵来绘制 到安卓巴士网站查看回答详情>>

热点内容
服务器cdn换ip影响收录吗 发布:2025-08-18 13:46:44 浏览:76
androiddeploy编译可执行程序 发布:2025-08-18 13:36:28 浏览:6
编译原理子树是什么 发布:2025-08-18 13:34:50 浏览:72
小孩学编程先学什么 发布:2025-08-18 13:32:35 浏览:710
输网址找不到服务器ip地址 发布:2025-08-18 13:32:33 浏览:775
什么是路由器缓存 发布:2025-08-18 13:28:48 浏览:250
红旗车什么配置 发布:2025-08-18 13:28:47 浏览:997
干坤脚本 发布:2025-08-18 13:27:06 浏览:1000
我的世界如何开通云隙服务器 发布:2025-08-18 13:23:11 浏览:16
android换背景 发布:2025-08-18 13:16:47 浏览:18