关于png的交错Interlace

先来说一下交错:

交错:Interlace


就是指浏览器下载它的时候隔行下载,这样下载一张图只用一半的时间就可以看到它的样子,只不过只是隔行的图,然后它再下载另一般,这样可以减少你等待看它的时间.
在存GIF和JPG时也有这个优化.(fireworks中) ______http://zhidao.baidu.com/question/5269019.html

网经:

交错技术

 

有很多用户上网的速度很慢,有时候显示一张图片时,等很久都不能显示图,如果,没用交错技术的话。那么用户要等图全下载完了才能看见。有交错技术那么图可以一部分一部分的显示出来。让用户可以提前知道内容。

 

图像隔行扫描:电视是隔行扫描,而电脑屏幕是逐行扫描,De-Interlace(隔行扫描)就是用来模拟电视屏幕的显示方式的。包括隔行GIF和逐级JPG方式。

 

1,交错图:如果图像是一幅交错图,则它在页面上逐步出现的时候,会以类似百叶窗的效果显示。

 

注意:一般默认情况下,图是以50%为单位显示。

 

PNG图像和GIF图像都支持这种交错格式。

 

隔行GIF是指图像文件是按照隔行的方式来显示的,比如先出奇数行,再出偶数行,造成图像是逐渐变清楚的。将图像文件保存成隔行GIF格式的方法是,在 Photoshop中进行保存时,选择“Interlaced”(不要选择“Normal”),在Paint Shop Pro中进行保存时,点击“Option…”按钮,选择“Interlaced”(不要选择“Non Interlaced”)。

 

 

2,渐进图:如果图像是一幅渐进图,则它在页面上逐步出现的时候,会首先显示较模糊的整幅图像,然后逐渐变得清晰。这样,浏览者可以在下载过程中尽早了解图像的大致轮廓。

 

JPG/JPEG图像支持这种渐进格式。

 

逐级JPG文件可以让图像先以比较模糊的形式显示,随着图像文件数据不断从网上传过来,图像会逐渐变清晰。这样做的好处是图像可以尽快地显示出来,虽然图像不很完美,但是却让浏览者看到了希望,并且图像在不断地变好。将图像文件保存成逐级JPG格式的方法是,在Photoshop中进行保存时,选择“Progressive”,在Paint Shop Pro中进行保存时,点击“Option…”按钮,选择“Progressive encoding”。

www.libpng.org/pub/png/pngintro.html

Interlacing

Interlacing--or, more generally, progressive display--has been around a long time.GIF has supported it since 1989, TIFF since around the same time (though not in any standardized way), and JPEG since the early 1990s (though it wasn't widely implemented until 1996).PNG's method is conceptually similar to GIF interlacing and visually similar to progressive JPEG (i.e., two-dimensional).

Png Features

Kerry Watson has created a wonderfully easy-to-read, multi-page intro covering compression, transparency, interlacing, a selection of Windows software , and comparisons to other formats as part of his Web Colors site.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
如果你想要使用C++保存数据为PNG格式,可以使用libpng库。下面是一个示例代码: ``` #include <png.h> void save_png(const char* file_name, int width, int height, const unsigned char* data) { FILE* fp = fopen(file_name, "wb"); if (!fp) { return; } png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (!png_ptr) { fclose(fp); return; } png_infop info_ptr = png_create_info_struct(png_ptr); if (!info_ptr) { png_destroy_write_struct(&png_ptr, NULL); fclose(fp); return; } png_init_io(png_ptr, fp); png_set_IHDR(png_ptr, info_ptr, width, height, 8, PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); png_write_info(png_ptr, info_ptr); for (int y = 0; y < height; y++) { png_bytep row_pointer = (png_bytep)(data + y * width * 4); png_write_row(png_ptr, row_pointer); } png_write_end(png_ptr, NULL); png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); } ``` 在这个示例中,我们定义了一个函数save_png(),它接受文件名、图像宽度、图像高度和图像数据作为参数。我们首先打开文件,并使用png_create_write_struct()和png_create_info_struct()函数创建PNG写入器和PNG信息结构。然后,我们初始化PNG写入器,并设置图像信息,包括图像宽度、高度、位深和颜色类型。接下来,我们使用png_write_row()函数将每一行像素数据写入文件。最后,我们使用png_write_end()、png_destroy_write_struct()和fclose()函数关闭文件和PNG写入器,并在必要时释放内存。 你可以根据自己的需求进行修改,比如更改图像数据类型、颜色类型和压缩类型。注意,这个示例代码只能保存RGB和RGBA格式的图像,如果你需要保存其他格式的图像,需要进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值