关于androidpng的信息-成都快上网建站

关于androidpng的信息

android里面的图片资源怎么都是png的

因为png格式的文件支持透明度,android中可以存在四种png后缀的image文件

成都创新互联公司为企业提供:品牌网站制作、网络营销策划、微信小程序开发、营销型网站建设和网站运营托管,一站式网络营销整体服务。实现不断获取潜在客户之核心目标,建立了企业专属的“营销型网站建设”,就用不着再为了获取潜在客户而苦恼,相反,客户会主动找您,生意就找上门来了!

1.标准PNG: (ex.应用默认的icon.png)

符合PNG-8标准的PNG图片, 只能做图片, 不能放缩.

2.Android打包处理后的9.png: (ex.应用APK中打包的9.PNG)

为了保证占用空间小,android在资源中删除了标准PNG的大量冗余信息,去除了周边的空白像素,减少了IDAT数据段,

在打包成APK的时候,里面的文件就是不可放缩的9.png, 虽然后缀名还是9.png,但是已经没有放缩功能,并且把边界多的两个像素也去除了.

3.Android不可放缩的9.png:

在drawable中可以找到9.png图片,但是使用Draw 9-patch软件打开会报错,但是可以在drawable中使用,

这些文件只是删除了冗余信息,并且加上了边界的两个像素点,

并没有添加可放缩的flag到文件中,这些文件只能作为打包后的9.PNG使用(但是size会小一些),不能放缩和做背景.

4.Android可放缩的9.png:

可以使用Draw 9-patch软件打开,不会报错,在drawable中使用,android会根据设置的黑色像素点来进行放缩.

有添加可缩放的flag到文件中,可以做为View的背景或者普通的图片显示.在做背景时,可以进行拉伸和放缩.

在做非背景时,比如像ImageView这类设置src图片则不随view变化,按其自身大小显示部分或全部.

另: 对9.png后缀文件的解析逻辑及可放缩chunk检查的逻辑 Images.cpp

对9.PNG判断函数入口: Drawable.java中对”nine-patch”字段的判断

android 如何压缩png图片字节数

如果你只是觉得程序背景图片大的话 这个应该是美工的问题 找个专业的美工设计下就Ok的

如果是程序中想压缩图片的话 网上的方法很多

下面代码是将图片按比例大小压缩方法(根据Bitmap图片压缩)

private Bitmap comp(Bitmap image) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();        

image.compress(Bitmap.CompressFormat.JPEG, 100, baos);

if( baos.toByteArray().length / 10241024) {//判断如果图片大于1M,进行压缩避免在生成图片(BitmapFactory.decodeStream)时溢出    

baos.reset();//重置baos即清空baos

image.compress(Bitmap.CompressFormat.JPEG, 50, baos);//这里压缩50%,把压缩后的数据存放到baos中

}

ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());

BitmapFactory.Options newOpts = new BitmapFactory.Options();

//开始读入图片,此时把options.inJustDecodeBounds 设回true了

newOpts.inJustDecodeBounds = true;

Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);

newOpts.inJustDecodeBounds = false;

int w = newOpts.outWidth;

int h = newOpts.outHeight;

//现在主流手机比较多是800*480分辨率,所以高和宽我们设置为

float hh = 800f;//这里设置高度为800f

float ww = 480f;//这里设置宽度为480f

//缩放比。由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可

int be = 1;//be=1表示不缩放

if (w  h  w  ww) {//如果宽度大的话根据宽度固定大小缩放

be = (int) (newOpts.outWidth / ww);

} else if (w  h  h  hh) {//如果高度高的话根据宽度固定大小缩放

be = (int) (newOpts.outHeight / hh);

}

if (be = 0)

be = 1;

newOpts.inSampleSize = be;//设置缩放比例

newOpts.inPreferredConfig = Config.RGB_565;//降低图片从ARGB888到RGB565

//重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了

isBm = new ByteArrayInputStream(baos.toByteArray());

bitmap = BitmapFactory.decodeStream(isBm, null, newOpts);

return compressImage(bitmap);//压缩好比例大小后再进行质量压缩

}

【ps:看你自己的需要吧 给个地方做参考 你也可以搜索下 其他的方法 】

android png还是jpg?

android开发过程中,有各种各样的图片,不同的图片有不同的大小、用途,有的是作为背景图片,有的是作为一个小的图标,不同用途、不同场景的图片使用格式最好按照不同格式的优缺点来确定。

1、首先来说,同样分辨率的图片,png的要比jpg的大好多, 做android对图片的大小很敏感,所以第一感觉是用jpg,不用png。之所以png比jpg大是因为,png是无损压缩的,而jpg是有损压缩,但是在比如说一张背景图,由于手机会对png的图片进行硬件加速,所以同一张图片的png格式和jpg格式,png的加载速度是比jpg快的,但是如果对包大小的诉求大于对加载速度诉求的话,jpg又比png有优势。

2、但是有的情况下jpg是比png好的,jpg相对于png的优势是小!小!小,因此一些需要动态网络获取加载的图片,比如说Splash页面,就要使用jpg格式的图片了。

3、小的图标,由于对其清晰度要求高,并且小图标也不是很大,因此最好用png格式的。

2020.12.10更新

让png和jpg都去死吧,用webp

以上仅作为个人的观点,如若有误,请指正!

android 使用必须是png吗

“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png

智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。

我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真。

OK,在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效果。

【普通拉伸和点九拉伸效果对比】

对比很明显,使用点九后,仍能保留图像的渐变质感,和圆角的精细度。

从中我们也可以理解为什么叫“点九PNG”,其实相当于把一张png图分成了9个部分(九宫格),分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的清晰状态,而2条水 平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样

二.“点九”的制作方法

方法1:使用 “draw9patch”工具绘制,流程如下

1. 安装工具

首先你需要给自己的电脑安装上java于系统的默认目录下。没有安装java的同学可以在百度搜索:jdk-6u20-windows-i586,安装包大小80M左右。

然后使用andriod模拟器—android-sdk-windows,打开SDK/tools目录下的“draw9patch.bat”文件,出现载入窗口:

2.导入并编辑

将png图片拖拽到该窗口中

如下图,自动进入编辑界面。图中介绍了每个区域的内容及功能注释。

预览右侧的视图发现,图片的边缘处于普通拉伸状态。

现在我们在图片边缘点击左键,绘制出黑线,即图片需要被拉伸的部分。如下图,对4条黑线做了注释。

如果失误多绘的部分,可按住shift键的同时点击鼠标左键擦除)。

如图所见,三种拉伸结果均已完美显示,已实现我们想要的拉伸效果,假设这是一个有显示文字的窗体,那么文字显示的区域,程序也会控制在黑线对应范围。

android png格式图片转换为jpg格式(代码)

把PNG格式的文件解析成BYTE数组然后再组合成JPG

byte[]

b=null;

File

PNG

=

null;

BufferedOutputStream

stream

=

null;

try

{

PNG

=

new

File(outputFile);

FileOutputStream

fstream

=

new

FileOutputStream(PNG);

stream

=

new

BufferedOutputStream(fstream);

stream.write(b);

}

catch

(Exception

e)

{

//

log.error("helper:get

file

from

byte

process

error!");

e.printStackTrace();

}

finally

{

if

(stream

!=

null)

{

try

{

stream.close();

}

catch

(IOException

e)

{

//

log.error("helper:get

file

from

byte

process

error!");

e.printStackTrace();

}

}

}

Bitmap

bitmap=BitmapFactory.decodeByteArray(b,

0,

b.length);

擦..发现自己弄的是BMP格式..反正就这样差不多了..


分享文章:关于androidpng的信息
网页URL:http://kswjz.com/article/dsicsso.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流