首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于Android图片资源瘦身奇思妙想

对于颜色很多尺寸大图片一般用jpg,主要适用场景是用于做背景展示,这类图片除了调整压缩参数做有损压缩外,无损压缩可优化空间则一般不会太大。...androidaapt在编译阶段其实是会对png图片进行压缩,用则是libpng和zlib,这个可以用aapt源码佐证: 用libpng对图片进行预处理 用zlib对预处理后图片进行压缩生成新图片...仔细分析发现九宫格图片被压出问题了,aapt在处理png图片时会判断是不是九宫格图片,如果是则做特殊预处理: do_9patch其实主要是九宫格信息弄出来,写入到info9Patch字段,并最终写入...nptcchunk中: 到这里又回到第一步为什么我说Ken是神童了,因为Pngout可以选择chunk进行压缩,所以解决方案便是:对于九宫格图片,我们单独拎出来,先用aaptaapt crunch...进行预处理得到npTc字段,再用pngout在压缩时调用"knptc"参数保护一下npTc块,这样便得到了正确九宫格图片,安装包效果图也就正常了。

4.7K40

iOS点九图NinePatch解析

; 3号黑色条位置向左覆盖区域表示图片纵向显示内容区域(在手机上主要是文字区域); 4号黑色条位置向上覆盖区域表示图片横向显示内容区域(在手机上主要是文字区域); 然而,包含4个黑边.9....png图片,并不会用于真正图片展示,真正用于手机展示图片,需要使用工具来对.9.png做处理之后生成新点九图,具体说步骤为: 设计师或者产品给出原始切图top1.png; 使用android studio...,写入到结果png图片chunkdata数据中,并且去掉4个1像素黑边,这样得到一张可用于手机展示点九图片。...xDivs和yDivs,用于指定如何将图像分割成多个部分进行拉伸缩放, xDivs描述了拉伸区域水平方向起始位置和结束位置 yDivs描述了拉伸区域垂直方向起始位置和结束位置 更具体和详细字段定义和理解...// The PNG chunk type is "npTc" const char npTc[4] = {'n', 'p', 'T', 'c'}; BOOL hasNinePatchChunk

92030
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android点九图总结以及在聊天气泡中使用

    *>(reinterpret_cast(this) + colorsOffset);    } } __attribute__((packed)); 这里简单讲下这个结构中每个字段代表含义...再看看这些字段是如何生效,首先看看一段源码中注释: * This chunk specifies how to split an image into segments for * scaling...,c[11]] 这时之前问题就解决了,这个数据块就是tag为”npTc数据块,数据内容为 Res_png_9patch。...这里mNinePatchChunk信息,实际上是在编译时,编译器将png图片中四周黑线所代表信息解析成Res_png_9patch,存放到png一个数据块中,然后j将tag设置为“npTc”,接着在使用时...,通过遍历png数据块,找到tag为“npTc数据块,如果这个数据块没有问题,这被用作参数构造Bitmap,最终成为mNinePatchChunk。

    5.7K41

    CC++-----------http协议发送字段,文件,单个和多张图片

    需要用这个来关闭异步套接字 1 WSACleanup( ); 这是http基本流程,对于get发送单个或者多个表单数据如上面所示 对于post而言,情况 会多些,也会复杂些    1.如果发送是单个或者多个字段信息...所以对于单个或者多个字段表单而言: 比如: 需要像如下html文件一样将username和pwd键值数据发送给服务器数据数据: <form...,但不要太简单,不然可能会和数据混淆,上面是两个字段发送,所以需要两部分正文加正文数据,对于尾部结束标识,前面需要“--”两个横短线后面也需要两个横短线“--”,对于中间分割标志,只需要前面有“...; 7 } 8 fseek(fp, 0, SEEK_END); //一直寻找到文件尾部 9 pic_len = ftell(fp); //得到图片长度...,需要修改不同Content-Type 比如图片jpg,jpeg等就是需要这种 ,"Content-Type: image/jpeg,对于其他类型,不妨去这儿找找,比较详细 http://tool.oschina.net

    4.7K100

    MariaDB 自增字段 AUTO_INCREMENT 字段

    如果你对自增字段有什么不了解的话,你可以搜索下相关定义。 简单来说就是一个数据表中需要一个主键,但是这个主键可能又没有什么具体意义,你可以使用 AUTO_INCREMENT 来标识这条记录。...每增加一条记录,主键会自动以相同步长进行增长。 通过给字段添加 AUTO_INCREMENT 属性来实现主键自增长。...一个表中只能有一个字段使用 AUTO_INCREMENT 约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键一部分)。...AUTO_INCREMENT 约束字段必须具备 NOT NULL 属性。 AUTO_INCREMENT 约束字段只能是整数类型(TINYINT、SMALLINT、INT、BIGINT 等)。...AUTO_INCREMENT 约束字段最大值受该字段数据类型约束,如果达到上限,AUTO_INCREMENT 就会失效。

    1.4K50

    MySQL字段类型_mysql数据库字段类型

    大家好,又见面了,我是你们朋友全栈君。 前言: 要了解一个数据库,我们必须了解其支持数据类型。MySQL 支持大量字段类型,其中常用也有很多。...前面文章我们也讲过 int 及 varchar 类型用法,但一直没有全面讲过字段类型,本篇文章我们将把字段类型一网打尽,讲一讲常用字段类型用法。...BLOB 类型主要用于存储二进制大对象,例如可以存储图片,音视频等文件。日常很少用到,有存储二进制字符串时可以考虑使用。...不过值得注意是,TIMESTAMP 字段数据会随着系统时区而改变但 DATETIME 字段数据不会。总体来说 DATETIME 使用范围更广。...总结: 本篇文章主要介绍了 MySQL 中常用字段类型,平时用到字段类型基本都在这里了,以一张思维导图总结如下: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    19.4K10

    explain各字段含义

    amount_coin from user;, 因为amount_coin字段没有建索引, 故而type字段将为ALL . explain select * from user;, 如果包含没有建索引列...当主键或唯一非NULL索引所有字段都被用作join联接时会使用此类型. eq_ref 可用于使用'='操作符作比较索引列, 比较值可以是常量, 也可以是使用在此表之前读取表达式. >>>...存储引擎, 当查询表只有一行或空表情况下,type字段将是system....Extra 非常重要一个字段 explain 中很多额外信息会在 Extra 字段显示, 常见有以下几种内容: distinct:在select部分使用了distinc关键字 Using filesort...,效率最快 在带有order by子句sql中,要尽可能使extra字段不要出现Using filesort,而是Using index 举例如何去掉 Using filesort: explain结果每个字段含义说明

    24141

    Mysql Explain主要字段

    当联合主键或唯一索引所有字段跟常量值比较时,join类型为const。其他数据库也叫做唯一索引扫描 3、eq_ref 多表join时,对于来自前面表每一行,在当前表中只能找到一行。...这可能是除了system和const之外最好类型。 当主键或唯一非NULL索引所有字段都被用作join联接时会使用此类型。 eq_r ef可用于使用’='操作符作比较索引列。...比较值可以是常量,也可以是使用在此表之前读取表达式。 相对于下面的ref区别就是它使用唯一索引,即主键或唯一索引,而ref使用是非唯一索引或者普通索引。...4、ref 对于来自前面表每一行,在此表索引中可以匹配到多行。若联接只用到索引最左前缀或索引不是主键或唯一索引时, 使用ref类型(也就是说,此联接能够匹配多行记录)。...Extra 字段显示, 常见有以下几种内容: distinct:在select部分使用了distinc关键字 Using filesort:当 Extra 中有 Using filesort

    1.4K20

    MySQL字段知识科普

    为什么varchar默认长度是255 1、 mysql要求varchar一个行定义长度不能超过65535bytes,这个大小包括了字段占用空间在内,text和blob等大字段除外(注: 单行最大限制指就是一张表中所有字段所设置长度总和不得超过...65535字节) 2、 InnoDB存储引擎表索引前缀长度最长是: 767字节,如果需要创建索引,不能超过这个长度。...而utf-8编码时: 255 * 3(一个字符占3个字节)= 765字节,恰恰时能够建立索引最大值单列索引长度限制(5.6里面默认不能超过767bytes,5.7不超过3072bytes) 3...、总结: varchar(255)不是最优字符长度,最优需要按照具体情况来,但是这个长度可以保证你能少出错一个不错默认值 int(20)中20表示什么意思 1、是指显示字符长度。...写在最后   经验就是一个积累过程,没有谁能够一步登天,所以脚踏实地才是成功秘诀。

    87310

    MySQL中json字段

    // MySQL中json字段 // MySQL5.7.8中引入了json字段,这种类型字段使用频率比较低,但是在实际操作中,有些业务仍然在用,我们以此为例,介绍下json字段操作方法...,info是json字段,插入了三条数据,如上: mysql> select * from test1 where json_extract(info,"$.age")>=30; +------+---...json中内容。...其中: 1、$符号代表是json根目录, 2、我们使用$.age相当于取出来了json中age字段, 3、当然,在函数最前面,应该写上字段名字info 下面来看json中常用函数: a、json_valid...,如果传入了字符串2,那么,返回结果是1 b、json_keys传回执行json字段最上一层key值 mysql> select json_keys('{"name":"yeyz","score":100

    9K20

    MySQL修改表字段

    MySQL修改表字段 MySQL 修改表字段方法有两种: ALTER TABLE MODIFY COLUMN。...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段字段类型; 其中,表名 表示要修改表名,字段名 表示要修改字段名,字段类型 表示修改后字段类型。...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段字段类型 [属性]; 其中,表名 表示要修改表名,字段名 表示要修改字段名,字段类型 表示修改后字段类型,属性 表示修改后字段属性...0; 需要注意是,如果修改表字段数据类型或长度,可能会造成数据丢失或者修改失败。...因此,在进行字段类型修改时,需要先备份数据,避免出现意外情况。

    5.4K10
    领券