• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ png_get_image_height函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中png_get_image_height函数的典型用法代码示例。如果您正苦于以下问题:C++ png_get_image_height函数的具体用法?C++ png_get_image_height怎么用?C++ png_get_image_height使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了png_get_image_height函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: image_png_read_header

int image_png_read_header(MediaScanImage *i, MediaScanResult *r) {
  int x;
  PNGData *p = malloc(sizeof(PNGData));
  i->_png = (void *)p;
  LOG_MEM("new PNGData @ %p\n", i->_png);

  p->buf = (Buffer *)r->_buf;
  p->fp = r->_fp;
  p->path = r->path;

  p->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, (png_voidp) p, image_png_error, image_png_warning);
  if (!p->png_ptr)
    FATAL("Could not initialize libpng\n");

  p->info_ptr = png_create_info_struct(p->png_ptr);
  if (!p->info_ptr) {
    png_destroy_read_struct(&p->png_ptr, (png_infopp) NULL, (png_infopp) NULL);
    FATAL("Could not initialize libpng\n");
  }

  if (setjmp(png_jmpbuf(p->png_ptr))) {
    image_png_destroy(i);
    return 0;
  }

  png_set_read_fn(p->png_ptr, p, image_png_read_buf);

  png_read_info(p->png_ptr, p->info_ptr);

  i->width = png_get_image_width(p->png_ptr, p->info_ptr);
  i->height = png_get_image_height(p->png_ptr, p->info_ptr);
  i->channels = png_get_channels(p->png_ptr, p->info_ptr);
  i->has_alpha = 1;
  r->mime_type = MIME_IMAGE_PNG;

  // Match with DLNA profile
  // DLNA does not support interlaced images
  if (png_get_interlace_type(p->png_ptr, p->info_ptr) == PNG_INTERLACE_NONE) {
    for (x = 0; png_profiles_mapping[x].profile; x++) {
      if (i->width <= png_profiles_mapping[x].max_width && i->height <= png_profiles_mapping[x].max_height) {
        r->dlna_profile = png_profiles_mapping[x].profile->id;
        break;
      }
    }
  }

  return 1;
}
开发者ID:chincheta0815,项目名称:libmediascan,代码行数:48,代码来源:image_png.c


示例2: PngSize

int PngSize(
    FILE * fd,
    long *width,
    long *height)
{
    png_structp png_read_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
                                                      (png_voidp) NULL,
                                                      /* we would need to point to error handlers
                                                         here to do it properly */
                                                      (png_error_ptr) NULL,
                                                      (png_error_ptr) NULL);

    png_infop info_ptr = png_create_info_struct(png_read_ptr);

    (*width) = 0;
    (*height) = 0;

/* this is to make compile on aix work since they seem to define jmpbuf
   to be _jmpbuf which breaks compilation */

#ifndef png_jmpbuf
#ifdef PNG_SETJMP_SUPPORTED
#  define png_jmpbuf(png_ptr)   ((png_ptr)->PNG_jmpbuf)
#else
#ifdef jmpbuf
#undef jmpbuf
#endif
#  define png_jmpbuf(png_ptr)   ((png_ptr)->jmpbuf)
#endif
#endif

    if (setjmp(png_jmpbuf(png_read_ptr))) {
        png_destroy_read_struct(&png_read_ptr, &info_ptr, (png_infopp) NULL);
        return 0;
    }

    png_init_io(png_read_ptr, fd);
    png_read_info(png_read_ptr, info_ptr);
    (*width) = png_get_image_width(png_read_ptr, info_ptr);
    (*height) = png_get_image_height(png_read_ptr, info_ptr);

    png_destroy_read_struct(&png_read_ptr, &info_ptr, NULL);
    if (*width > 0 && *height > 0)
        return 1;
    else
        return 0;
}
开发者ID:BOBYou,项目名称:ntopng,代码行数:47,代码来源:pngsize.c


示例3: oil_libpng_init

int oil_libpng_init(struct oil_libpng *ol, png_structp rpng, png_infop rinfo,
	int out_width, int out_height)
{
	int ret, in_width, in_height, buf_len;
	enum oil_colorspace cs;

	ol->rpng = rpng;
	ol->rinfo = rinfo;
	ol->in_vpos = 0;
	ol->inbuf = NULL;
	ol->inimage = NULL;

	cs = png_cs_to_oil(png_get_color_type(rpng, rinfo));
	if (cs == OIL_CS_UNKNOWN) {
		return -1;
	}

	in_width = png_get_image_width(rpng, rinfo);
	in_height = png_get_image_height(rpng, rinfo);
	ret = oil_scale_init(&ol->os, in_height, out_height, in_width,
		out_width, cs);
	if (ret!=0) {
		free(ol->inbuf);
		return ret;
	}

	buf_len = png_get_rowbytes(rpng, rinfo);
	switch (png_get_interlace_type(rpng, rinfo)) {
	case PNG_INTERLACE_NONE:
		ol->inbuf = malloc(buf_len);
		if (!ol->inbuf) {
			oil_scale_free(&ol->os);
			return -2;
		}
		break;
	case PNG_INTERLACE_ADAM7:
		ol->inimage = alloc_full_image_buf(in_height, buf_len);
		if (!ol->inimage) {
			oil_scale_free(&ol->os);
			return -2;
		}
		png_read_image(rpng, ol->inimage);
		break;
	}

	return 0;
}
开发者ID:ender672,项目名称:liboil,代码行数:47,代码来源:oil_libpng.c


示例4: readPng

static void readPng(gambatte::uint_least32_t *const out, const char *const filename) {
    const struct PngContext {
        png_structp png;
        png_infop info;
        png_infop endinfo;

        PngContext() :
            png(png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0)),
            info(png ? png_create_info_struct(png) : 0),
            endinfo(png ? png_create_info_struct(png) : 0)
        {
            assert(png);
            assert(info);
            assert(endinfo);
        }

        ~PngContext() {
            png_destroy_read_struct(&png, &info, &endinfo);
        }
    } pngCtx;

    const struct FileCtx {
        std::FILE *f;
        FileCtx(const char *filename) : f(std::fopen(filename, "rb")) {
            assert(f);
        }
        ~FileCtx() {
            std::fclose(f);
        }
    } fileCtx(filename);

    if (setjmp(png_jmpbuf(pngCtx.png)))
        std::abort();

    png_init_io(pngCtx.png, fileCtx.f);
    png_read_png(pngCtx.png, pngCtx.info, 0, 0);

    assert(png_get_image_height(pngCtx.png, pngCtx.info) == 144);
    assert(png_get_rowbytes(pngCtx.png, pngCtx.info) == 160 * 4);

    png_bytep *const rows = png_get_rows(pngCtx.png, pngCtx.info);

    for (std::size_t y = 0; y < 144; ++y)
        for (std::size_t x = 0; x < 160; ++x)
            out[y * 160 + x] = rows[y][x * 4] << 16 | rows[y][x * 4 + 1] << 8 | rows[y][x * 4 + 2];
}
开发者ID:jbmorley,项目名称:gambatte,代码行数:46,代码来源:testrunner.cpp


示例5: verifySignature

Texture* TextureReader::read()
{
    verifySignature(reader);
    initialisePNGReader(reader);

    const unsigned char* data = readImageData();
    const unsigned int width = png_get_image_width(_png, _pngInfo);
    const unsigned int height = png_get_image_height(_png, _pngInfo);

    _data = (GLubyte*)data;
    Texture* texture = new Texture(_data, width, height, 0);
    texture->setData(data);
    delete[] data;
    png_destroy_read_struct(&_png, &_pngInfo, NULL);

    return texture;
}
开发者ID:NeoLeijona,项目名称:EVO,代码行数:17,代码来源:TextureReader.cpp


示例6: png_load_hdr

int png_load_hdr(img I) {
    unsigned char sig[PNG_SIG_LEN];
    png_structp png_ptr;
    png_infop info_ptr;

    rewind(I->fp);

    if (fread(sig, sizeof(sig[0]), PNG_SIG_LEN, I->fp) != PNG_SIG_LEN) {
        return(0);
    }

    /* Check the PNG signature of the file */
    if (png_sig_cmp(sig, (png_size_t)0, PNG_SIG_LEN)) {
        I->err = IE_HDRFORMAT;
        return 0;
    }

    png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
        NULL, NULL, NULL);

    if (png_ptr == NULL) {
        I->err = IE_HDRFORMAT;
        return 0;
    }

    info_ptr = png_create_info_struct(png_ptr);

    if (info_ptr == NULL) {
        png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
        I->err = IE_HDRFORMAT;
        return 0;
    }
    
    rewind(I->fp);
    png_init_io(png_ptr, I->fp);

    png_read_info(png_ptr, info_ptr);

    I->width = png_get_image_width(png_ptr, info_ptr);
    I->height = png_get_image_height(png_ptr, info_ptr);
    
    png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);

    return(1);
}
开发者ID:cfinucane,项目名称:driftnet,代码行数:45,代码来源:png.c


示例7: loadPNGDecode

static int loadPNGDecode(unsigned char **pixels, int *width, int *height, int flags,
						 png_structp png_ptr, png_infop info_ptr,  png_infop end_info, 
						 const char *callerStr) {
	// get header info
    png_read_info(png_ptr, info_ptr);

    *width = png_get_image_width(png_ptr, info_ptr);
    *height = png_get_image_height(png_ptr, info_ptr);
	int color_type = png_get_color_type(png_ptr, info_ptr);
    int bit_depth = png_get_bit_depth(png_ptr, info_ptr);

    if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth <= 8) png_set_expand(png_ptr);
    if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) png_set_expand(png_ptr);
    if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) png_set_expand(png_ptr);
    if (bit_depth == 16) png_set_strip_16(png_ptr);
	if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
		png_set_gray_to_rgb(png_ptr);

	// decode
	if (pixels) {
		if (!(flags & PNG_NO_ALLOC))
			*pixels = (unsigned char*)malloc(3 * (*width) * (*height) * sizeof(unsigned char));
		unsigned char **row_pointers = (unsigned char **)malloc(2 * (*height) * sizeof(unsigned char*));

		if ((*pixels == NULL) || (row_pointers == NULL)) {
			cprintf("%s: memory allocation error\n", callerStr);
			if ((!(flags & PNG_NO_ALLOC)) && (*pixels)) free(*pixels);
			if (row_pointers) free(row_pointers);
			return -1;
		}

		int i;
		for (i = 0; i < 2 * (*height); i++) {
			row_pointers[i] = *pixels;
		}
		for (i = 0; i < *height; i++) {
			row_pointers[i] = (*pixels) + (i) * (*width) * 3;
		}
		png_read_image(png_ptr, row_pointers);
		free(row_pointers);

		png_read_end(png_ptr, end_info);
	}
	return 0;
}
开发者ID:maarten990,项目名称:bsc-pga,代码行数:45,代码来源:pngwrapper.cpp


示例8: png_sig_cmp

int svlImageCodecPNG::ReadDimensions(std::istream &stream, unsigned int &width, unsigned int &height)
{
    // check file for signature
    png_byte pngsig[PNG_SIG_SIZE];
    if (stream.read(reinterpret_cast<char*>(pngsig), PNG_SIG_SIZE).fail() ||
        png_sig_cmp(pngsig, 0, PNG_SIG_SIZE) != 0) {
        return SVL_FAIL;
    }

    // create read structure
    png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
    if (png_ptr == 0) return SVL_FAIL;

    // create info structure
    png_infop info_ptr = png_create_info_struct(png_ptr);
    if (info_ptr == 0) {
        png_destroy_read_struct(&png_ptr, reinterpret_cast<png_infopp>(0), reinterpret_cast<png_infopp>(0));
        return SVL_FAIL;
    }

    width = 0;
    height = 0;

    // setup error handling
    if (setjmp(png_jmpbuf(png_ptr))) {
        png_destroy_read_struct(&png_ptr, &info_ptr, reinterpret_cast<png_infopp>(0));
        return SVL_OK;
    }
    PNG_source_stream source;
    source.stream = &stream;
    source.error = false;
    png_set_read_fn(png_ptr, &source, PNG_read_data_stream);

    png_set_sig_bytes(png_ptr, PNG_SIG_SIZE);
    png_read_info(png_ptr, info_ptr);

    // check file header
    width = static_cast<unsigned int>(png_get_image_width(png_ptr, info_ptr));
    height = static_cast<unsigned int>(png_get_image_height(png_ptr, info_ptr));

    // clean up
    png_destroy_read_struct(&png_ptr, &info_ptr,reinterpret_cast<png_infopp>(0));

    return SVL_OK;
}
开发者ID:Shuyoung,项目名称:cisst,代码行数:45,代码来源:svlImageCodecPNG.cpp


示例9: read_png

/* read the png image to fill row_pointers */
int read_png(FILE *fp, png_bytep **row_pointers, png_uint_32 *width, png_uint_32 *height) {
    png_structp png_ptr;
    png_infop info_ptr;
    png_uint_32 color_type;
    unsigned char header[PNG_HEADER_SIZE];

    /* check if it's a png file */
    size_t bytes_read = fread(header, sizeof(unsigned char), PNG_HEADER_SIZE, fp);
    if (ferror(fp) || (bytes_read != PNG_HEADER_SIZE)) {
        return 0;
    }
    if (png_sig_cmp(header, 0, PNG_HEADER_SIZE) != 0) {
        return 0;
    }

    /* initialize libpng stuff */
    png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, (png_voidp)NULL, NULL, NULL);
    info_ptr = png_create_info_struct(png_ptr);
    png_init_io(png_ptr, fp);
    png_set_sig_bytes(png_ptr, PNG_HEADER_SIZE); // because of the check above
    png_read_info(png_ptr, info_ptr);

    *height = png_get_image_height(png_ptr, info_ptr);
    *width = png_get_image_width(png_ptr, info_ptr);
    *row_pointers = png_malloc(png_ptr, *height*sizeof(png_bytep));
    for (int i=0; i<*height; i++) {
        (*row_pointers)[i] = png_malloc(png_ptr, *width*PIXEL_SIZE);
    }
    png_set_rows(png_ptr, info_ptr, *row_pointers);

    color_type = png_get_color_type(png_ptr, info_ptr);
    /* we don't need alpha channel */
    if (color_type & PNG_COLOR_MASK_ALPHA) {
        png_set_strip_alpha(png_ptr);
    }
    png_read_update_info(png_ptr, info_ptr);

    /* and ... finally read the image */
    png_read_image(png_ptr, *row_pointers);
    png_read_end(png_ptr, NULL);
    png_destroy_read_struct(&png_ptr, &info_ptr, NULL);

    return 1;
}
开发者ID:solsticedhiver,项目名称:hidim_in_c,代码行数:45,代码来源:hidim.c


示例10: png_get_bbox

int
png_get_bbox (FILE *png_file, uint32_t *width, uint32_t *height,
	       double *xdensity, double *ydensity)
{
  png_structp png_ptr;
  png_infop   png_info_ptr;

  rewind (png_file);
  png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, warn);
  if (png_ptr == NULL ||
      (png_info_ptr = png_create_info_struct (png_ptr)) == NULL) {
    WARN("%s: Creating Libpng read/info struct failed.", PNG_DEBUG_STR);
    if (png_ptr)
      png_destroy_read_struct(&png_ptr, NULL, NULL);
    return -1;
  }

  /* Inititializing file IO. */
  png_init_io (png_ptr, png_file);

  /* Read PNG info-header and get some info. */
  png_read_info(png_ptr, png_info_ptr);
  *width      = png_get_image_width (png_ptr, png_info_ptr);
  *height     = png_get_image_height(png_ptr, png_info_ptr);

  if (compat_mode)
    *xdensity = *ydensity = 72.0 / 100.0;
  else
  {
    png_uint_32 xppm = png_get_x_pixels_per_meter(png_ptr, png_info_ptr);
    png_uint_32 yppm = png_get_y_pixels_per_meter(png_ptr, png_info_ptr);

    *xdensity = xppm ? 72.0 / 0.0254 / xppm : 1.0;
    *ydensity = yppm ? 72.0 / 0.0254 / yppm : 1.0;
  }

  /* Cleanup */
  if (png_info_ptr)
    png_destroy_info_struct(png_ptr, &png_info_ptr);
  if (png_ptr)
    png_destroy_read_struct(&png_ptr, NULL, NULL);

  return 0;
}
开发者ID:leo-liu,项目名称:ptex-ng,代码行数:44,代码来源:pngimage.c


示例11: png_create_read_struct

int svlImageCodecPNG::ReadDimensions(const unsigned char *buffer, const size_t buffersize, unsigned int &width, unsigned int &height)
{
    if (!buffer || buffersize < static_cast<unsigned int>(PNG_SIG_SIZE)) return SVL_FAIL;

    // check file for signature
    if (png_sig_cmp(const_cast<unsigned char*>(buffer), 0, PNG_SIG_SIZE) != 0) return SVL_FAIL;

    // create read structure
    png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
    if (png_ptr == 0) return SVL_FAIL;

    // create info structure
    png_infop info_ptr = png_create_info_struct(png_ptr);
    if (info_ptr == 0) {
        png_destroy_read_struct(&png_ptr, reinterpret_cast<png_infopp>(0), reinterpret_cast<png_infopp>(0));
        return SVL_FAIL;
    }

    width = 0;
    height = 0;

    // setup error handling
    if (setjmp(png_jmpbuf(png_ptr))) {
        png_destroy_read_struct(&png_ptr, &info_ptr, reinterpret_cast<png_infopp>(0));
        return SVL_OK;
    }
    _PNG_source_memory source;
    source.buffer = const_cast<unsigned char*>(buffer + PNG_SIG_SIZE);
    source.buffersize = static_cast<unsigned int>(buffersize - PNG_SIG_SIZE);
    source.error = false;
    png_set_read_fn(png_ptr, &source, PNG_read_data_memory);

    png_set_sig_bytes(png_ptr, PNG_SIG_SIZE);
    png_read_info(png_ptr, info_ptr);

    // check file header
    width = static_cast<unsigned int>(png_get_image_width(png_ptr, info_ptr));
    height = static_cast<unsigned int>(png_get_image_height(png_ptr, info_ptr));

    // clean up
    png_destroy_read_struct(&png_ptr, &info_ptr,reinterpret_cast<png_infopp>(0));

    return SVL_OK;
}
开发者ID:Shuyoung,项目名称:cisst,代码行数:44,代码来源:svlImageCodecPNG.cpp


示例12: getSizePng

static int getSizePng(const char *file, unsigned int *width, unsigned int *height)
{
	FILE *fp = fopen(file, "rb");
	if(!fp){
		printf("Couldn't open file: %s\n", file);
		return false;
	}

	unsigned char header[8];
	fread(header, 1, sizeof(header), fp);
	if(png_sig_cmp(header, 0, sizeof(header))){
		printf("File supplied is not a valid PNG: %s\n", file);
		return false;
	}

	png_structp png = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
	if(!png){
		return false;
	}

	png_infop info = png_create_info_struct(png);
	if(!info){
		png_destroy_read_struct(&png, NULL, NULL);
		fclose(fp);
		return false;
	}

	if(setjmp(png_jmpbuf(png))){
		png_destroy_read_struct(&png, &info, NULL);
		fclose(fp);
		return false;
	}

	png_init_io(png, fp);
	png_set_sig_bytes(png, sizeof(header));

	png_read_info(png, info);

	*width = png_get_image_width(png, info);
	*height = png_get_image_height(png, info);

	return true;
}
开发者ID:tversteeg,项目名称:rogueliek,代码行数:43,代码来源:png.c


示例13: png_read_png

unsigned char* TextureReader::readImageData()
{
    const int transforms = PNG_TRANSFORM_PACKING | PNG_TRANSFORM_STRIP_16;
    png_read_png(_png, _pngInfo, transforms, NULL);

    const unsigned int height = png_get_image_height(_png, _pngInfo);
    const unsigned int rowSize = png_get_rowbytes(_png, _pngInfo);
    unsigned char* data = new unsigned char[height * rowSize];
    unsigned char* row = data;
    unsigned char** rows = png_get_rows(_png, _pngInfo);

    for(unsigned int i = height - 1u; i != UINT32_MAX; --i)
    {
        std::copy(rows[i], rows[i] + rowSize, row);
        row += rowSize;
    }

    return data;
}
开发者ID:NeoLeijona,项目名称:EVO,代码行数:19,代码来源:TextureReader.cpp


示例14: ReadPngData_Interlaced

static HPDF_STATUS
ReadPngData_Interlaced  (HPDF_Dict    image,
                         png_structp  png_ptr,
                         png_infop    info_ptr)
{
    png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr);
    png_uint_32 height = png_get_image_height(png_ptr, info_ptr);
    png_bytep* row_pointers = HPDF_GetMem (image->mmgr,
                height * sizeof (png_bytep));

    if (row_pointers) {
        HPDF_UINT i;

        HPDF_MemSet (row_pointers, 0, height * sizeof (png_bytep));
        for (i = 0; i < (HPDF_UINT)height; i++) {
            row_pointers[i] = HPDF_GetMem (image->mmgr, len);

            if (image->error->error_no != HPDF_OK)
                break;
        }

        if (image->error->error_no == HPDF_OK) {
            png_read_image(png_ptr, row_pointers);
            if (image->error->error_no == HPDF_OK) {       /* add this line */
                for (i = 0; i < (HPDF_UINT)height; i++) {
                    if (HPDF_Stream_Write (image->stream, row_pointers[i], len) !=
                            HPDF_OK)
                        break;
                }
            }
        }

        /* clean up */
        for (i = 0; i < (HPDF_UINT)height; i++) {
            HPDF_FreeMem (image->mmgr, row_pointers[i]);
        }

        HPDF_FreeMem (image->mmgr, row_pointers);
    }

    return image->error->error_no;
}
开发者ID:ProjectTegano,项目名称:Tegano,代码行数:42,代码来源:hpdf_image_png.c


示例15: rewind

struct image *png_open(FILE *f){
	struct png_t *p;

	rewind(f);
	if(!ispng(f))
		return NULL;

	p = malloc(sizeof(struct png_t));
	if((p->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)) == NULL){
		free(p);
		return NULL;
	}
	if((p->info_ptr = png_create_info_struct(p->png_ptr)) == NULL){
		png_destroy_read_struct(&p->png_ptr, (png_infopp)NULL, (png_infopp)NULL);
		free(p);
		return NULL;
	}
	if((p->end_info = png_create_info_struct(p->png_ptr)) == NULL){
		png_destroy_read_struct(&p->png_ptr, &p->info_ptr, (png_infopp)NULL);
		free(p);
		return NULL;
	}
	if(setjmp(png_jmpbuf(p->png_ptr))){
		png_destroy_read_struct(&p->png_ptr, &p->info_ptr, &p->end_info);
		free(p);
		return NULL;
	}

	p->f = f;
	rewind(f);
	png_init_io(p->png_ptr, f);

	png_read_info(p->png_ptr, p->info_ptr);

	p->img.bufwidth = png_get_image_width(p->png_ptr, p->info_ptr);
	p->img.bufheight = png_get_image_height(p->png_ptr, p->info_ptr);

	p->img.fmt = &libpng;

	return (struct image *)p;
}
开发者ID:rtandy,项目名称:meh,代码行数:41,代码来源:png.c


示例16: reader

void GL::Image::load(const unsigned char *buf, size_t bufSize)
{
    GLBufferReader reader((const uint8_t*)buf, bufSize);
    png_byte sig[8];
    if (reader.read(sig, sizeof(sig)) == sizeof(sig)) {
        if (png_sig_cmp(sig, 0, sizeof(sig)) == 0) {
            png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
            png_infop info_ptr = png_create_info_struct(png_ptr);
            png_infop end_info = png_create_info_struct(png_ptr);
            if (setjmp(png_jmpbuf(png_ptr))) {
                png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
            }
            png_set_sig_bytes(png_ptr, sizeof(sig));
            png_set_read_fn(png_ptr, &reader, pngReader);
            png_read_info(png_ptr, info_ptr);
            
            // color type should be PNG_COLOR_TYPE_PALETTE
            width_ = png_get_image_width(png_ptr, info_ptr);
            height_ = png_get_image_height(png_ptr, info_ptr);
            
            png_set_expand(png_ptr);
            png_set_bgr(png_ptr); // for BGR for OpenGL texture
 
            png_read_update_info(png_ptr, info_ptr);
            png_byte color_type = png_get_color_type(png_ptr, info_ptr);
            
            png_size_t rowbytes = png_get_rowbytes(png_ptr, info_ptr);
            png_byte *image_data = new png_byte[rowbytes * height_];
            png_bytep row_pointers[height_];
            for (int y = 0; y < height_; ++y) {
                row_pointers[y] = image_data + (y * rowbytes);
            }
            png_read_image(png_ptr, row_pointers);
            png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
            loadTextureData_(image_data, color_type == PNG_COLOR_TYPE_RGB_ALPHA);
            delete[] image_data;
        }
    }
}
开发者ID:kainjow,项目名称:Glypha,代码行数:39,代码来源:GLImage_libpng.cpp


示例17: write_png2

static VALUE
write_png2(VALUE *args)
{
    struct io_write *data;
    png_structp png_ptr = (png_structp)args[0];
    png_infop info_ptr = (png_infop)args[1];
    VALUE scanline, image_in = args[2];
    size_t i;

    write_configure(image_in, png_ptr, info_ptr);
    png_write_info(png_ptr, info_ptr);

    for (i = 0; i < png_get_image_height(png_ptr, info_ptr); i++) {
	scanline = rb_funcall(image_in, id_gets, 0);
	write_scanline(scanline, png_ptr, info_ptr);
    }
    png_write_end(png_ptr, info_ptr);

    data = (struct io_write *)png_get_io_ptr(png_ptr);

    return INT2FIX(data->total);
}
开发者ID:ender672,项目名称:axon,代码行数:22,代码来源:png.c


示例18: delete_alpha

png_bytep delete_alpha(png_structp* png_ptr, png_infop* info_ptr, png_bytep pixeldata)
{
        png_bytep dataBlock;
        png_uint_32 height, width;

        height = png_get_image_height(*png_ptr, *info_ptr);
        width = png_get_image_width(*png_ptr, *info_ptr);

        dataBlock = (png_bytep)malloc(sizeof(png_bytep)*width*height*3);

        for(png_uint_32 i = 0; i<height; i++)
        {
                for(png_uint_32 j = 0; j<width; j++)
                {
                        *(dataBlock + i*width*3 + j*3) = *(pixeldata + i*width*4 + j*4);
                        *(dataBlock + i*width*3 + j*3 + 1) = *(pixeldata + i*width*4 + j*4 + 1);
                        *(dataBlock + i*width*3 + j*3 + 2) = *(pixeldata + i*width*4 + j*4 + 2);
                }
        }

        return dataBlock;
}
开发者ID:AnthonyZi,项目名称:CodeAnalyser,代码行数:22,代码来源:readpng.cpp


示例19: QVariant

QVariant QPngHandler::option(ImageOption option) const
{
    if (d->state == QPngHandlerPrivate::Error)
        return QVariant();
    if (d->state == QPngHandlerPrivate::Ready && !d->readPngHeader())
        return QVariant();

    if (option == Gamma)
        return d->gamma == 0.0 ? d->fileGamma : d->gamma;
    else if (option == Quality)
        return d->quality;
    else if (option == Description)
        return d->description;
    else if (option == Size)
        return QSize(png_get_image_width(d->png_ptr, d->info_ptr),
                     png_get_image_height(d->png_ptr, d->info_ptr));
    else if (option == ScaledSize)
        return d->scaledSize;
    else if (option == ImageFormat)
        return d->readImageFormat();
    return QVariant();
}
开发者ID:2gis,项目名称:2gisqt5android,代码行数:22,代码来源:qpnghandler.cpp


示例20: info_callback

/* This function is called (as set by png_set_progressive_read_fn() above) when enough data has been supplied so all of the header has been read.  */
void info_callback(png_structp png_ptr, png_infop info) {

  file_end=0;
  width = png_get_image_width(png_ptr,info);
  height = png_get_image_height(png_ptr,info);
  pixel_depth = png_get_bit_depth(png_ptr,info);
  
  channels = png_get_channels(png_ptr,info);
  
  color_type = png_get_color_type(png_ptr,info);
  if(color_type == PNG_COLOR_TYPE_GRAY)      {}
  if(color_type == PNG_COLOR_TYPE_GRAY_ALPHA){}
  if(color_type == PNG_COLOR_TYPE_RGB)       {}
  if(color_type == PNG_COLOR_TYPE_RGB_ALPHA) {}
  if(color_type == PNG_COLOR_TYPE_PALETTE )  {

    int r = png_get_PLTE(png_ptr,info,&palette,&num_palette);
    if(r == 0) {
    }
    
    png_uint_16p histogram = NULL;

    png_get_hIST(png_ptr, info, &histogram);
    png_set_expand(png_ptr);
    png_set_filler(png_ptr, 0xFF, PNG_FILLER_AFTER);
    png_read_update_info(png_ptr, info);
    pixel_depth = 8;
  }

  int row_bytes = png_get_rowbytes(png_ptr,info);

  row_pointers = malloc(sizeof(png_bytep *) * height);
  for(size_t n=0;n<height;n++) {
    row_pointers[n] = malloc(row_bytes);
  }

  png_start_read_image(png_ptr);
}
开发者ID:new299,项目名称:wflow,代码行数:39,代码来源:inlinedata.c



注:本文中的png_get_image_height函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ png_get_io_ptr函数代码示例发布时间:2022-05-31
下一篇:
C++ order函数代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap