LodePNG PNG 编码和解码库开源项目

我要开发同款
匿名用户2014年11月14日
36阅读
开发技术C/C++
所属分类程序开发、图形/图像处理
授权协议Zlib

作品详情

LodePNG是一个C/C++语言用来编码和解码PNG图像的库。

示例代码:

/*LodePNG ExamplesCopyright (c) 2005-2012 Lode VandevenneThis software is provided 'as-is', without any express or impliedwarranty. In no event will the authors be held liable for any damagesarising from the use of this software.Permission is granted to anyone to use this software for any purpose,including commercial applications, and to alter it and redistribute itfreely, subject to the following restrictions:    1. The origin of this software must not be misrepresented; you must not    claim that you wrote the original software. If you use this software    in a product, an acknowledgment in the product documentation would be    appreciated but is not required.    2. Altered source versions must be plainly marked as such, and must not be    misrepresented as being the original software.    3. This notice may not be removed or altered from any source    distribution.*/#include "lodepng.h"#include /*3 ways to decode a PNG from a file to RGBA pixel data (and 2 in-memory ways).*///g++ lodepng.cpp example_decode.cpp -ansi -pedantic -Wall -Wextra -O3//Example 1//Decode from disk to raw pixels with a single function callvoid decodeOneStep(const char* filename){  std::vector image; //the raw pixels  unsigned width, height;  //decode  unsigned error = lodepng::decode(image, width, height, filename);  //if there's an error, display it  if(error) std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl;  //the pixels are now in the vector "image", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ...}//Example 2//Load PNG file from disk to memory first, then decode to raw pixels in memory.void decodeTwoSteps(const char* filename){  std::vector png;  std::vector image; //the raw pixels  unsigned width, height;  //load and decode  lodepng::load_file(png, filename);  unsigned error = lodepng::decode(image, width, height, png);  //if there's an error, display it  if(error) std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl;  //the pixels are now in the vector "image", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ...}//Example 3//Load PNG file from disk using a State, normally needed for more advanced usage.void decodeWithState(const char* filename){  std::vector png;  std::vector image; //the raw pixels  unsigned width, height;  lodepng::State state; //optionally customize this one  lodepng::load_file(png, filename); //load the image file with given filename  unsigned error = lodepng::decode(image, width, height, state, png);  //if there's an error, display it  if(error) std::cout << "decoder error " << error << ": "<< lodepng_error_text(error) << std::endl;  //the pixels are now in the vector "image", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ...  //State state contains extra information about the PNG such as text chunks, ...}int main(int argc, char *argv[]){  const char* filename = argc > 1 ? argv[1] : "test.png";  decodeOneStep(filename);}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论