不会的。因为质量压缩并不是能一味的压缩下去,压缩到一定程度就不会再压缩了,它只是通过改变色深等改变图片大小,不会改变其占用的内存
Ⅱ 格式工厂里,视频用最高质量压缩,会不会有损耗
压缩这个词本身就是一种损耗!呵呵~
不过你要是设置合理的话,可以忽略不计的
Ⅲ 怎么实现高质量的压缩文件呢
RAR有高质量压缩功能
Ⅳ 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对原图片进行按比例压缩
}
上面就是简单的质量压缩与尺寸压缩。
Ⅳ 如何迅速高质量压缩文件
一般的方法压缩不到吧
Ⅵ 怎么压缩文件,图片质量不变
1、把图片都复制到一个文件夹中,命名为:XX图片;
2、右键点击XX图片的文件夹,在右键菜单中左键点击:添加到压缩文件(A);
压缩文件便制作好了。
PS:
1、用RAR该怎么操作,上述方法就是用RAR制作压缩文件 ;
2、压缩方式是选 储存,标准,还是最好?一般选用:标准;
3、要压成多个压缩文件该怎么弄?如果照片多了,我们把照片分别复制粘贴到几个文件夹,再分别加以压缩。
Ⅶ 为什么PPT可以往高质量压缩,往低压缩质量压缩不了
因为你的图片本身的质量低于220ppi所以没法压缩 压缩图片只能往低压缩质量,没法往高升图片质量的。 我的理解是这样的。
Ⅷ 压缩文件后质量一般会不会有变化
压缩分为有损和无损压缩两种,有损压缩会影响质量,无算压缩可完全恢复,不影响质量。
压缩可分为有损压缩和无损压缩。如果个人数据的丢失没有太大的影响,那么忽略它们是一个好主意。这就是所谓的有损压缩。有损压缩广泛应用于动画、声音和图像文件。
但通常情况下,压缩数据必须是准确的,人们已经设计了无损压缩格式,如通用zip、rar等等。所谓无损压缩格式,就是利用数据的统计冗余进行压缩,能够完全恢复原始数据而不引起任何失真。
(8)质量压缩扩展阅读:
常见的压缩软件:
WinMount,WinRAR,WinZip,7-zip,coolrar
常见的压缩格式包括:
Rar,zip,tar,cab,uue,jar,iso,z,7-zip,ace,LZH,arj,gzip,bz2等
压缩软件压缩后的文件被称为压缩文件,压缩的原理是压缩文件的二进制代码,邻0,1减少代码,例如:000000年,它可以转化为6060写作方法,减少文件的空间。
Ⅸ 图像的压缩品质指什么
压缩品质就是压缩以后图像的品质,呵呵,这相当于没说。通俗地讲,就是用图像处理软件保存图像时,为了节省硬盘空间,一般是要对原始图像通过一定的算法进行压缩的,而压缩品质实质上就是压缩比率的大小,压缩的比率越高,生成的图像所占硬盘空间就越少,便是图片质量也就越差;相反,压缩比率越低,图像的品质越高,但是相应地占用硬盘空间也就越大。采用什么样的压缩品质,还要具休地看是什么用途,如果是做网页用,图像不能太大,否则会影响网页的打开速度,所以采用较低的压缩品质就行了,如果是要冲印,则必须保证图片的质量,这时就要采用很高的压缩品质。而大部分时间我们既不做网网页也不冲印,而是存在电脑上,这时采用中等的压缩品质就行了。
像素图的运算都是采用非常复杂的公式,不同软件采用的公式也是不同的。这些虽然不是很机密的技术,但是很少有软件公司把这些公式公布出来。目前,没有看到过Adobe公司公布图像的压缩算法。
Ⅹ 探讨一下压缩方法 !但视频质量不变!
格式工厂做不了无损压缩的 做无损压缩网上用的最多的可能就是TMPGEnc 4.0 XPress了 可以用来做蓝光原盘的无损压缩了
另外 把350kbps码率的视频做H264编码的压缩 生成的视频绝对好不了哪儿去 因为原文件质量太差了 48k的音频码率也够糟的了 我们听的普通的MP3一般都还是128k的呢 普通的DVD影片码率也在500-600k的码率 720p的高清影片都到了2-4MB/s的码率
原文件质量的好坏很关键 另外 只要做的不是无损压缩 那么质量都会下降的 只是人眼能否分辨而已罢了 但用软件分析或是用高清液晶看的话 就暴露无疑了