Ejemplo n.º 1
0
Archivo: azura.cpp Proyecto: kyuu/azura
    //--------------------------------------------------------------
    Image::Ptr ReadImage(File* file, FileFormat::Enum ff, PixelFormat::Enum pf)
    {
        if (!file || (pf != PixelFormat::DontCare && pf < 0)) {
            return 0;
        }

        Image::Ptr image;

        switch (ff)
        {
            case FileFormat::BMP:
            {
                image = ReadBMP(file);
                break;
            }
            case FileFormat::PNG:
            {
                image = ReadPNG(file);
                break;
            }
            case FileFormat::JPEG:
            {
                image = ReadJPEG(file);
                break;
            }
            case FileFormat::AutoDetect:
            {
                int initial_pos = file->tell();

                // try reading as BMP
                image = ReadBMP(file);
                if (image) {
                    break;
                }

                file->seek(initial_pos);

                // try reading as PNG
                image = ReadPNG(file);
                if (image) {
                    break;
                }

                file->seek(initial_pos);

                // try reading as JPEG
                image = ReadJPEG(file);

                break;
            }
            default:
                return 0;
        }

        if (image && pf != PixelFormat::DontCare && image->getPixelFormat() != pf) {
            image = image->convert(pf);
        }

        return image;
    }
Ejemplo n.º 2
0
static int ReadPicture(const char* const filename, WebPPicture* const pic,
                       int keep_alpha, Metadata* const metadata) {
  int ok = 0;
  FILE* in_file = fopen(filename, "rb");
  if (in_file == NULL) {
    fprintf(stderr, "Error! Cannot open input file '%s'\n", filename);
    return ok;
  }

  if (pic->width == 0 || pic->height == 0) {
    // If no size specified, try to decode it as PNG/JPEG (as appropriate).
    const InputFileFormat format = GetImageType(in_file);
    if (format == PNG_) {
      ok = ReadPNG(in_file, pic, keep_alpha, metadata);
    } else if (format == JPEG_) {
      ok = ReadJPEG(in_file, pic, metadata);
    } else if (format == TIFF_) {
      ok = ReadTIFF(filename, pic, keep_alpha, metadata);
    } else if (format == WEBP_) {
      ok = ReadWebP(filename, pic, keep_alpha, metadata);
    }
  } else {
    // If image size is specified, infer it as YUV format.
    ok = ReadYUV(in_file, pic);
  }
  if (!ok) {
    fprintf(stderr, "Error! Could not process file %s\n", filename);
  }

  fclose(in_file);
  return ok;
}
Ejemplo n.º 3
0
int R2Image::
Read(const char *filename)
{
  // Initialize everything
  if (pixels) { delete [] pixels; pixels = NULL; }
  width = height = nchannels = 0;

  // Parse input filename extension
  char *input_extension;
  if (!(input_extension = (char*)strrchr(filename, '.'))) {
    fprintf(stderr, "Input file has no extension (e.g., .jpg).\n");
    return 0;
  }
  
  // Read file of appropriate type
  if (!strncmp(input_extension, ".bmp", 4)) return ReadBMP(filename);
  else if (!strncmp(input_extension, ".png", 4)) return ReadPNG(filename);
  else if (!strncmp(input_extension, ".ppm", 4)) return ReadPPM(filename);
  else if (!strncmp(input_extension, ".pgm", 4)) return ReadPGM(filename);
  else if (!strncmp(input_extension, ".pfm", 4)) return ReadPFM(filename);
  else if (!strncmp(input_extension, ".jpg", 4)) return ReadJPEG(filename);
  else if (!strncmp(input_extension, ".jpeg", 5)) return ReadJPEG(filename);
  
  // Should never get here
  fprintf(stderr, "Unrecognized image file extension");
  return 0;
}
Ejemplo n.º 4
0
ImageData ReadImage(char* fileName)
{
    // Check that fileName ends in either jpg or png, and dispatch if so
    if (strcmp("png", fileName + strlen(fileName) - 3) == 0)
        return ReadPNG(fileName);
    else if (strcmp("jpg", fileName + strlen(fileName) - 3) == 0)
        return ReadJPG(fileName);
    else {
        ImageData meta;
        meta.valid = false;
        return meta;
    }
}
Ejemplo n.º 5
0
PNG::Bitmap *PNG::ReadPNG(const TCHAR *resource)
//----------------------------------------------
{
	const char *pData = nullptr;
	HGLOBAL hglob = nullptr;
	size_t nSize = 0;
	if(LoadResource(resource, TEXT("PNG"), pData, nSize, hglob) == nullptr)
	{
		return nullptr;
	}

	FileReader file(pData, nSize);
	return ReadPNG(file);
}
Ejemplo n.º 6
0
LDraw::Bitmap* BitmapLoader::Load(IO::ISequentialByteStream* stream)
{
	int n;
	for (n = 0; n < 5; n++)
	{
		int ret = -1;

		switch (n)
		{
		case 0:
			{
				ret = ReadJPEG(this, stream);
			}
			break;

		case 1:
			{
				ret = ReadGIF(this, stream);
			}
			break;

		case 2:
			{
				ret = ReadPNG(this, stream);
			}
			break;

		case 3:
			{
				ret = ReadBMP(this, stream);
			}
			break;

		case 4:
			{
				ret = ReadTGA(this, stream);
			}
			break;
		}

		if (ret == 0)
			break;

		stream->Seek(0, System::IO::STREAM_SEEK_SET);
	}

	return m_bitmap;
}
Ejemplo n.º 7
0
/* Creates an HBITMAP to an image file.  returns an HBITMAP if successfull,
// NULL otherwise */
HBITMAP CreateBitmapFromPNGFile( const char *filename,
                int blend )
{
    char ext[4], msg[256];
    char *period;
    BMGError out = BMG_OK;
    struct BMGImageStruct img;
    HBITMAP hBitmap = NULL;

    InitBMGImage( &img );
    img.opt_for_bmp = 1;

    strcpy( msg, filename );
    period = strrchr( msg, '.' );
    if ( period != NULL )
    {
        period++;
        strncpy( ext, period, 3 );
        ext[0] = toupper( ext[0] );
        ext[1] = toupper( ext[1] );
        ext[2] = toupper( ext[2] );
        ext[3] = 0;
    }
    else
    {
        strcat( msg, ".PNG" );
        strcpy( ext, "PNG" );
    }

    if ( strcmp( ext, "PNG" ) == 0 )
    {
        out = ReadPNG( msg, &img ); 
        if (  out == BMG_OK )
        {
            hBitmap = CreateBitmapFromData( img, blend );
        }
        FreeBMGImage( &img );
    }
    else
    {
        out = errInvalidFileExtension;
    }

    SetLastBMGError( out );
    return hBitmap;
}
Ejemplo n.º 8
0
/**
 * Read a image file into the DIB.  This method will check to see if the
 * file is a BMP or JPEG and call the appropriate reader.
 */
bool vtDIB::Read(const char *fname, bool progress_callback(int))
{
	FILE *fp = vtFileOpen(fname, "rb");
	if (!fp)
		return false;
	uchar buf[2];
	if (fread(buf, 2, 1, fp) != 1)
		return false;
	fclose(fp);
	if (buf[0] == 0x42 && buf[1] == 0x4d)
		return ReadBMP(fname, progress_callback);
	else if (buf[0] == 0xFF && buf[1] == 0xD8)
		return ReadJPEG(fname, progress_callback);
	else if (buf[0] == 0x89 && buf[1] == 0x50)
		return ReadPNG(fname, progress_callback);
	return false;
}
Ejemplo n.º 9
0
//*************************************************************************************
//	
//*************************************************************************************
CTexture *	CTextureManager::Create( const CString & filename, bool warn )
{
	CTexture *		p_texture( NULL );
	CFile * const	p_file( CFileSystem::Open( filename, "rb" ) );

	if ( p_file != NULL )
	{
		const CString	extension( p_file->GetExtension() );

		if ( extension == "png" || extension == "PNG" )
		{
			p_texture = ReadPNG( p_file );
		}
		else if ( extension == "tga" || extension == "TGA" )
		{
			p_texture = ReadTGA( p_file );
		}
		else if ( extension == "jpg" || extension == "JPG" )
		{
			p_texture = ReadJPG( p_file );
		}
		else if ( extension == "bmp" || extension == "BMP" )
		{
			p_texture = ReadBMP( p_file );
		}
		else
		{
			TRACE( "Unrecognised image extension %s\n", extension.GetPtr() );
			ASSERT( 0, "" );
		}

		CFileSystem::Close( p_file );
	}

	if ( p_texture == NULL )
	{
		if ( warn == true )
		{
			TRACE( "Failed to load image %s\n", filename.GetPtr() );
			ASSERT( 0, "" );
		}
	}

	return p_texture;
}
int main (int argc , char ** argv) {
  if (argc==3) {
    FILE * fp = fopen (argv[1],"rb");
    if (fp) {
      unsigned int sizex, sizey;
      int img_depth,img_alpha;
      unsigned char ** row_pointers;
      unsigned char * data = ReadPNG(fp,sizex,sizey,img_depth,img_alpha,&row_pointers);
      fclose(fp);
      if (data&&(img_alpha&PNG_HAS_ALPHA)) {
        ModifyImage (sizex,sizey,img_depth,img_alpha&PNG_HAS_ALPHA,row_pointers);
        free(row_pointers);
        FILE * wr = fopen(argv[2],"wb");
        WritePNG(wr,data,sizex,sizey,img_depth,img_alpha&PNG_HAS_ALPHA);
        fclose(wr);
      }
    }
  }
}
Ejemplo n.º 11
0
PngT *PngLoadFromFile(const char *path) {
  RwOpsT *stream;

  if ((stream = RwOpsFromFile(path, "r"))) {
    PngT *png = NewInstance(PngT);

    if (ReadPNG(png, stream)) {
      LOG("Loaded '%s' file.", path);
    } else {
      MemUnref(png);
      png = NULL;
    }

    IoClose(stream);
    return png;
  }

  return NULL;
}
Ejemplo n.º 12
0
int main (int argc , char ** argv) {
  if (argc==3) {
    FILE * fp = fopen (argv[1],"rb");
    if (fp) {
      unsigned int sizex, sizey;
      int img_depth,img_alpha;
      unsigned char ** row_pointers;
      unsigned char * data = ReadPNG(fp,sizex,sizey,img_depth,img_alpha,&row_pointers);
      fclose(fp);
      if (data) {
        unsigned char outimage[HEI][WID][3];
        ModifyImage (sizex,sizey,img_depth,img_alpha&PNG_HAS_ALPHA,row_pointers,WID,HEI,outimage);
        free(row_pointers);
        FILE * wr = fopen(argv[2],"wb");
        WritePNG(wr,(unsigned char*)outimage,WID,HEI,8,0);
        fclose(wr);
      }
    }
  }
}
Ejemplo n.º 13
0
int main(int argc, char* argv[])
{
	(void)argc;
	(void)argv;
	const int width = 640;
	const int height = 480;
	const int depth = 32;
	Mesh mesh[NUM_MESHES];

	ilInit();
	iluInit();

	//srand(time(NULL));
	perspective(clipMatrix, 60.0f, (float)width/(float)height, 1.0f, 40.0f);

	for(int i = 0; i < NUM_MESHES; ++i) {
		mesh[i].rotationSpeed = rnd_min_max(0.0f, 0.25f);
		mesh[i].position.x = rnd_min_max(-1.0f, 1.0f);
		mesh[i].position.y = rnd_min_max(-1.0f, 1.0f);
		mesh[i].position.z = rnd_min_max(-2.5f, -30.0f);
		mesh[i].position.w = 1.0f;
	}
	SR_Init(width, height);
	SR_SetCaption("Tile-Rasterizer Test");

	const Texture* tex = ReadPNG("texture0.png");
	if(!tex){
		printf("Couldn't find texture0.png, aborting..\n");
		return -1;
	}
	SR_BindTexture0(tex);

	for(int i=0; i<NUM_MESHES; ++i)
		makeMeshCube(mesh[i].vertexData, mesh[i].tcoordData, 1.0f);

	SR_MainLoop(loop, quit, (void*)&mesh[0]);
}
Ejemplo n.º 14
0
ePicture::ePicture(const char* name, const ePoint2& size) : buffer(size)
{
	ReadPNG(name, buffer.Data(), size.x, size.y, 4);
}
Ejemplo n.º 15
0
static void
LoadPNGImage(char *path, Image * img)
{
  XImage *ximg;
  unsigned char *PngData = NULL, *ptr;
  char *ClipData = NULL, *clip_ptr;
  int x, y, clipcellmask = 1;
  int depth;
  XColor Color;
  Colormap cmap;

  if (ReadPNG(path, &PngData, &img->width, &img->height))
  {
    Scr->screen = DefaultScreen(dpy);
    cmap = Scr->TwmRoot.cmaps.cwins[0]->colormap->c;
    depth = Scr->d_depth;
    /* XCreateImage only allows 8, 16, 32 as bitmap width */
    if (depth != 8 && depth != 16 && depth != 32)
    {
      if (depth < 8)
	depth = 8;
      else if (depth < 16)
	depth = 16;
      else if (depth < 32)
	depth = 32;
    }
    ximg = XCreateImage(dpy, Scr->d_visual, Scr->d_depth, ZPixmap, 0, NULL, img->width, img->height, depth, 0);
    if (!ximg)
      return;
    ximg->data = malloc(ximg->bytes_per_line * ximg->height);

    ClipData = calloc(img->width * img->height, 1);

    ptr = PngData;
    clip_ptr = ClipData;
    for (y = 0; y < img->height; y++)
    {
      for (x = 0; x < img->width; x++)
      {
	Color.red = (*ptr << 8);
	ptr++;
	Color.green = (*ptr << 8);
	ptr++;
	Color.blue = (*ptr << 8);
	ptr++;

	Color.flags = DoRed | DoGreen | DoBlue;
	XAllocColor(dpy, cmap, &Color);
	XPutPixel(ximg, x, y, Color.pixel);

	if (*ptr > 0)
	  *clip_ptr |= clipcellmask;
	ptr++;
	if (clipcellmask == 128)
	{
	  clip_ptr++;
	  clipcellmask = 1;
	}
	else
	  clipcellmask = clipcellmask << 1;

      }
    }

    img->pixmap = XCreatePixmap(dpy, RootWindow(dpy, Scr->screen), img->width, img->height, Scr->d_depth);
    XPutImage(dpy, img->pixmap, Scr->NormalGC, ximg, 0, 0, 0, 0, img->width, img->height);

    img->mask = XCreatePixmapFromBitmapData(dpy, RootWindow(dpy, Scr->screen), ClipData, img->width, img->height, 1, 0, 1);
    img->type = IMAGE_TYPE_PNG;

    XDestroyImage(ximg);

  }

}
Ejemplo n.º 16
0
static void Load() {
  image = ReadPNG("data/curiousity_by_fool2.png", 0);
  PrintPNG(image);
}