精华内容
下载资源
问答
  • 面我们已经对PNG的存储格式有了了解,因此,生成PNG图片只需要按照以上的数据块写入文件即可。 (由于IHDR、PLTE的结构都非常简单,因此,这里我们只是重点讲一讲IDAT的生成方法,IHDR和PLTE的数据内容都沿用以上的数...
    面我们已经对PNG的存储格式有了了解,因此,生成PNG图片只需要按照以上的数据块写入文件即可。

    (由于IHDR、PLTE的结构都非常简单,因此,这里我们只是重点讲一讲IDAT的生成方法,IHDR和PLTE的数据内容都沿用以上的数据内容)

    问题确实是这样的,我们知道,对于大多数的图形文件来说,我们都可以将实际的图像内容映射为一个二维的颜色数组,对于上面的PNG文件,由于它用的是16色的调色板(实际是13色),因此,对于图片的映射可以如下:

    20059713245193.png
    (调色板对照图)

    12 11 10 9 8 7 6 5
    11 10 9 8 7 6 5 4
    10 9 8 7 6 5 4 3
    9 8 7 6 5 4 3 2
    8 7 6 5 4 3 2 1
    7 6 5 4 3 2 1 0
    6 5 4 3 2 1 0 0
    5 4 3 2 1 0 0 0

    PNG Spec中指出,如果PNG文件不是采用隔行扫描方法存储的话,那么,数据是按照行(ScanLine)来存储的,为了区分第一行,PNG规定在每一行的前面加上0以示区分,因此,上面的图像映射应该如下:

    0 12 11 10 9 8 7 6 5
    0 11 10 9 8 7 6 5 4
    0 10 9 8 7 6 5 4 3
    0 9 8 7 6 5 4 3 2
    0 8 7 6 5 4 3 2 1
    0 7 6 5 4 3 2 1 0
    0 6 5 4 3 2 1 0 0
    0 5 4 3 2 1 0 0 0

    另外,需要注意的是,由于PNG在存储图像时为了节省空间,因此每一行是按照位(Bit)来存储的,而并不是我们想象的字节(Byte),如果你没有忘记的话,我们的IHDR数据块中的色深就指明了这一点,所以,为了凑成PNG所需要的IDAT,我们的数据得改成如下:

    0 203 169 135 101
    0 186 152 118 84
    0 169 135 101 67
    0 152 118 84 50
    0 135 101 67 33
    0 118 84 50 16
    0 101 67 33 0
    0 84 50 16 0

    最后,我们对这些数据进行LZ77压缩就可以得到IDAT的正确内容了。

    然而,事情并不是这么简单,因为我们研究的是手机上的PNG,如果需要在手机上完成LZ77压缩工作,消耗的时间是可想而知的,因此,我们得再想办法加减少压缩时消耗的时间。

    好在LZ77也提供了无压缩的压缩方法(奇怪吧?),因此,我们只需要简单的使用无压缩的方式写入数据就可以了,这样虽然浪费了空间,却换回了时间!

    好了,让我们看一看怎么样凑成无压缩的LZ77压缩块:

    字节
    意义
    0~2压缩信息,固定为0x78, 0xda, 0x1
    3~6压缩块的LEN和NLEN信息
    压缩的数据
    最后4字节Adler32信息

    其中的LEN是指数据的长度,占用两个字节,对于我们的图像来说,第一个Scan Line包含了5个字节(如第一行的0, 203, 169, 135, 101),所以LEN的值为5(字节/行) * 8(行) = 40(字节),生成字节为28 00(低字节在前),NLEN是LEN的补码,即NLEN = LEN ^ 0xFFFF,所以NLEN的为 D7 FF,Adler32信息为24 A7 0B A4(具体算法见源程序),因此,按照这样的顺序,我们生成IDAT数据块,最后,我们将IHDR、PLTE、IDAT和IEND数据块写入文件中,就可以得到PNG文件了,如图:

    20059713245514.png
    (选中的部分为生成的“压缩”数据)

    至此,我们已经能够采用最快的时间将数组转换为PNG图片了。


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126983/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/10294527/viewspace-126983/

    展开全文
  • 做方案时的好帮手,可在网页上找一些图片资源,如服务器,手机,电脑等一些图片,然后通过本软件可去掉这些图片的白底,生成透明的PNG格式图片,在PPT或方案文件中可直接使用了。 还可提取EXE程序中的图片。 注意...
  • 原文:http://www.ismyway.com/png/png-struct2.htm 上面我们已经对PNG的存储格式有了了解,因此,生成PNG图片只需要按照以上的数据块写入文件即可。 (由于IHDR、PLTE的结构都非常简单,因此,这里我们只是重点讲一...

    原文:http://www.ismyway.com/png/png-struct2.htm

     

    上面我们已经对PNG的存储格式有了了解,因此,生成PNG图片只需要按照以上的数据块写入文件即可。

    (由于IHDR、PLTE的结构都非常简单,因此,这里我们只是重点讲一讲IDAT的生成方法,IHDR和PLTE的数据内容都沿用以上的数据内容)

    问题确实是这样的,我们知道,对于大多数的图形文件来说,我们都可以将实际的图像内容映射为一个二维的颜色数组,对于上面的PNG文件,由于它用的是16色的调色板(实际是13色),因此,对于图片的映射可以如下:

    调色板对照图
    (调色板对照图)

    12 11 10 9 8 7 6 5
    11 10 9 8 7 6 5 4
    10 9 8 7 6 5 4 3
    9 8 7 6 5 4 3 2
    8 7 6 5 4 3 2 1
    7 6 5 4 3 2 1 0
    6 5 4 3 2 1 0 0
    5 4 3 2 1 0 0 0

    PNG Spec中指出,如果PNG文件不是采用隔行扫描方法存储的话,那么,数据是按照行(ScanLine)来存储的,为了区分第一行,PNG规定在每一行的前面加上0以示区分,因此,上面的图像映射应该如下:

    0 12 11 10 9 8 7 6 5
    0 11 10 9 8 7 6 5 4
    0 10 9 8 7 6 5 4 3
    0 9 8 7 6 5 4 3 2
    0 8 7 6 5 4 3 2 1
    0 7 6 5 4 3 2 1 0
    0 6 5 4 3 2 1 0 0
    0 5 4 3 2 1 0 0 0

    另外,需要注意的是,由于PNG在存储图像时为了节省空间,因此每一行是按照位(Bit)来存储的,而并不是我们想象的字节(Byte),如果你没有忘记的话,我们的IHDR数据块中的色深就指明了这一点,所以,为了凑成PNG所需要的IDAT,我们的数据得改成如下:

    0 203 169 135 101
    0 186 152 118 84
    0 169 135 101 67
    0 152 118 84 50
    0 135 101 67 33
    0 118 84 50 16
    0 101 67 33 0
    0 84 50 16 0

    最后,我们对这些数据进行LZ77压缩就可以得到IDAT的正确内容了。

    然而,事情并不是这么简单,因为我们研究的是手机上的PNG,如果需要在手机上完成LZ77压缩工作,消耗的时间是可想而知的,因此,我们得再想办法加减少压缩时消耗的时间。

    好在LZ77也提供了无压缩的压缩方法(奇怪吧?),因此,我们只需要简单的使用无压缩的方式写入数据就可以了,这样虽然浪费了空间,却换回了时间!

    好了,让我们看一看怎么样凑成无压缩的LZ77压缩块:

    字节
    意义
    0~2 压缩信息,固定为0x78, 0xda, 0x1
    3~6 压缩块的LEN和NLEN信息
    压缩的数据
    最后4字节 Adler32信息

    其 中的LEN是指数据的长度,占用两个字节,对于我们的图像来说,第一个Scan Line包含了5个字节(如第一行的0, 203, 169, 135, 101),所以LEN的值为5(字节/行) * 8(行) = 40(字节),生成字节为28 00(低字节在前),NLEN是LEN的补码,即NLEN = LEN ^ 0xFFFF,所以NLEN的为 D7 FF,Adler32信息为24 A7 0B A4(具体算法见源程序),因此,按照这样的顺序,我们生成IDAT数据块,最后,我们将IHDR、PLTE、IDAT和IEND数据块写入文件中,就可 以得到PNG文件了,如图:


    (选中的部分为生成的“压缩”数据)

    至此,我们已经能够采用最快的时间将数组转换为PNG图片了。

    生成的PNG文件:

    范例(附源程序)

     

    展开全文
  • http://www.j2medev.com/Article/Class2/200504/233.html上面我们已经对PNG的存储格式有了了解,因此,生成PNG图片只需要按照以上的数据块写入文件即可。 (由于IHDR、PLTE的结构都非常简单,因此,这里我们只是重点...

    http://www.j2medev.com/Article/Class2/200504/233.html

    上面我们已经对PNG的存储格式有了了解,因此,生成PNG图片只需要按照以上的数据块写入文件即可。

    (由于IHDR、PLTE的结构都非常简单,因此,这里我们只是重点讲一讲IDAT的生成方法,IHDR和PLTE的数据内容都沿用以上的数据内容)
    问题确实是这样的,我们知道,对于大多数的图形文件来说,我们都可以将实际的图像内容映射为一个二维的颜色数组,对于上面的PNG文件,由于它用的是16色的调色板(实际是13色),因此,对于图片的映射可以如下:
    调色板对照图
    (调色板对照图)
    12 11 10 9 8 7 6 5
    11 10 9 8 7 6 5 4
    10 9 8 7 6 5 4 3
    9 8 7 6 5 4 3 2
    8 7 6 5 4 3 2 1
    7 6 5 4 3 2 1 0
    6 5 4 3 2 1 0 0
    5 4 3 2 1 0 0 0
    PNG Spec中指出,如果PNG文件不是采用隔行扫描方法存储的话,那么,数据是按照行(ScanLine)来存储的,为了区分第一行,PNG规定在每一行的前面加上0以示区分,因此,上面的图像映射应该如下:
    0 12 11 10 9 8 7 6 5
    0 11 10 9 8 7 6 5 4
    0 10 9 8 7 6 5 4 3
    0 9 8 7 6 5 4 3 2
    0 8 7 6 5 4 3 2 1
    0 7 6 5 4 3 2 1 0
    0 6 5 4 3 2 1 0 0
    0 5 4 3 2 1 0 0 0
    另外,需要注意的是,由于PNG在存储图像时为了节省空间,因此每一行是按照位(Bit)来存储的,而并不是我们想象的字节(Byte),如果你没有忘记的话,我们的IHDR数据块中的色深就指明了这一点,所以,为了凑成PNG所需要的IDAT,我们的数据得改成如下:
    0 203 169 135 101
    0 186 152 118 84
    0 169 135 101 67
    0 152 118 84 50
    0 135 101 67 33
    0 118 84 50 16
    0 101 67 33 0
    0 84 50 16 0
    最后,我们对这些数据进行LZ77压缩就可以得到IDAT的正确内容了。
    然而,事情并不是这么简单,因为我们研究的是手机上的PNG,如果需要在手机上完成LZ77压缩工作,消耗的时间是可想而知的,因此,我们得再想办法加减少压缩时消耗的时间。
    好在LZ77也提供了无压缩的压缩方法(奇怪吧?),因此,我们只需要简单的使用无压缩的方式写入数据就可以了,这样虽然浪费了空间,却换回了时间!
    好了,让我们看一看怎么样凑成无压缩的LZ77压缩块:
    字节
    意义
    0~2 压缩信息,固定为0x78, 0xda, 0x1
    3~6 压缩块的LEN和NLEN信息
    压缩的数据
    最后4字节 Adler32信息
    其中的LEN是指数据的长度,占用两个字节,对于我们的图像来说,第一个Scan Line包含了5个字节(如第一行的0, 203, 169, 135, 101),所以LEN的值为5(字节/行) * 8(行) = 40(字节),生成字节为28 00(低字节在前),NLEN是LEN的补码,即NLEN = LEN ^ 0xFFFF,所以NLEN的为 D7 FF,Adler32信息为24 A7 0B A4(具体算法见源程序),因此,按照这样的顺序,我们生成IDAT数据块,最后,我们将IHDR、PLTE、IDAT和IEND数据块写入文件中,就可以得到PNG文件了,如图:

    (选中的部分为生成的“压缩”数据)
    至此,我们已经能够采用最快的时间将数组转换为PNG图片了。
    生成的PNG文件:
    范例(附源程序)
     
    展开全文
  • 在博主的稍前一篇文章中,写到vue中关于将信息生成二维码的方法,生成的二维码图片是canvas所绘制,在手机端我们往往需要将手机二维码图片可以保存到本地,该如何操作呢。 首先,假使生成的二维码图片挂载在id为...

    在博主的稍前一篇文章中,写到vue中关于将信息生成二维码的方法,生成的二维码图片是canvas所绘制,在手机端我们往往需要将手机二维码图片可以保存到本地,该如何操作呢。

    首先,假使生成的二维码图片挂载在id为target的div标签下

    <div data-v-4eb8d02a="" id="target" class="qrcode">
           <canvas width="85" height="85"></canvas>
    </div>

    生成canvas图片的方法为:

    $('#target').qrcode({
           text: "message",
           width: 85,
           height: 85
    });

    假使调用saveImg方法时,将生成的二维码图片保存到本地,具体如下:

    // 将canvas生成的二维码保存为图片
    saveImg() {
            var canvasData = $('#target').children('canvas');
            var a = document.createElement("a");
            a.href = canvasData[0].toDataURL();;
            a.download = "drcQrcode";
            a.click();
     },

    当方法调用时,即可将生成的二维码图片下载到本地。

     

    展开全文
  • 很多做网店的拿不到数据包,只能...C jpg、jpeg、gif、bmp、png 等网络常用格式的图片均支持直接转换成手机图片 3,已注册用户,不限次数,不限电脑,不限地方,只要与本程序绑定的PC版QQ能登陆,就能在该电脑使用软件。
  • 两种修改png图片颜色方法的对比

    万次阅读 2006-07-04 13:18:00
    两种修改png图片颜色方法的对比在手机游戏开发中,为了节省资源,我们常常修改png图片以实现一张图片多种显示效果。有两种办法可以实现这个功能: 第一种是装载png图片,使用getRGB()取得取得图片的RGB颜色数据,...
  • 比如下图中的“畅途网汽车票”,不通过手动截屏,直接点击按钮就将订单生成图片保存到本地了,怎么通过编程实现这个功能呢?求大神指点![图片说明]...
  • 作用:通俗的讲,即我们可以通过png图片上划线去控制那些地方可以拉伸变形,那些地方不拉伸变形的位图,Android会跟png上的划线自适应不同分辨率手机屏幕,适用场景比如开图、内容大小动态不确定的外框图等等。...
  • 内容也很简单,直接用手机生成一个png图片。就是为了背景透明以便其他地方调用。 有无锯齿主要依靠一句代码:g.TextRenderingHint= TextRenderingHint.AntiAlias; 生成图片 1、有锯齿 2、无锯齿 生成...
  • php生成二维码图片

    2013-12-19 14:44:23
    php生成二维码图片 用法: include "./phpqrcode/phpqrcode.php"; $value="http://www.xxx.com"; $errorCorrectionLevel = "L"; $matrixPointSize = "4"; $file_path = false; QRcode::png($value, $file_...
  • wxml <!--pages/share/share.wxml--&...image src="/icon/fenxiang_beijing.png"></image> <view class="share-con"> <image src="/icon/fenxiang_juxing.png" class="white"></image>
  • 又回忆起3年前的那个j2me手机游戏程序员……这个算法是参考一位高人的文章,直接读取并修改png格式图片的调色板,然后生成新的调色板替代原来的。这样可以实现游戏中常见的变色效果,可以解决游戏容量有限,不能存放...
  • 因为在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。 从今天开始,你不用担心啦,因为你来到了25学堂官网,25学堂有责任...
  • 目前在windows+flash builder,在模拟器下在widnows本地成功生成了jpg和png图片,在android平板上也成功了,虽然路径并不是android相册以至于现在还未找到图片在哪里... 大体流程就是: 通过Bit...
  • 两种修改png图片颜色方法的对比在手机游戏开发中,为了节省资源,我们常常修改png图片以实现一张图片多种显示效果。有两种办法可以实现这个功能: 第一种是装载png图片,使用getRGB()取得取得图片的RGB颜色数据,...
  • 零操作多用途制作,快速自动生成圆角图片、多边形图片、为图片加水印、转换图片格式、压缩图片尺寸,全部支持批量操作。完全本地化的软件操作使用,不用上传到网络制作以避免原始图片素材的流失,保证你原始图片的...
  • 在很多网站我们需要上传图片图片不能超过大小限制,但是当前手机拍出来的图片都是非常大的,那么我们如何生成指定文件大小的图片呢?有的人说ffmpeg,但是它好像非常复杂而且怎么制定文件大小我也没有搜出来,下面...
  • ![图片说明](https://img-ask.csdn.net/upload/201509/14/1442235008_282526.png) ...eclipse生成的安装包文件如图,前面的图片不是小机器人,在手机上也无法安装,请问这到底是为什么??拜托拜托。。
  • 【本文原创,谢绝转载】 一、出现的问题 这几天做了手机上传照片并裁出缩略图的接口的测试,...经过群里的请教,发现问题可能是出现在文件的类型的判断上,因为png图片自带一个透明的图层,导致不能直接转换成jpg的
  • 手机浏览器图片显示

    千次阅读 2010-04-21 14:47:00
    手机浏览器可以在服务器上生成图片,但是不显示到手机上。原因分析:手机下载图片支持大小,支持格式,设置图片需不需要格式转换添加MIME类型-----------------------------------------------------显示图片图片...
  • 【本文原创,谢绝转载】 一、出现的问题 这几天做了手机上传照片并裁出缩略图的接口的測试,发现无论怎么。...经过群里的请教,发现问题可能是出如今文件的类型的推断上,由于png图片自带一个透明的图层。导致不...
  • 手机上如何将图片转换成PDF文档

    万次阅读 2018-09-04 19:02:27
    我们在工作中经常遇会到的就是转换图片的格式,就比如像一些png、jpg等格式的图片 转换成PDF,大部分的人都会选择在电脑上完成这个操作,但其实手机上也可以完成, 在这里小编就教大家简单的图片转换成PDF的方法。...
  • 您只需要上传一张2M以内的jpg或png图片。然后输入验证码点击提交后,会自动的处理并生成一个压缩包下载。 目前支持29*29,40*40,48*48,50*50,58*58,57*57,72*72,76*76,80*80,87*87,96*96,100*100,114*114,120*120,...
  • ![图片说明](https://img-ask.csdn.net/upload/201710/17/1508247178_214750.png)
  • <div><p>vue-qr版本:1.3.0 本地图片转换成base64 <img alt="image" src="https://img-blog.csdnimg.cn/img_convert/ebe4a87ccb3e463250bdf90867566460.png" /> 生成二维码 ...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 210
精华内容 84
关键字:

手机生成png图片