Esempio n. 1
0
int main(int argc, char** argv)
{
	if (argc != 5 && argc != 6 && argc != 7)
	{
		printf("Usage: program SourceJPEG DestJPEG DestWidth DestHeight [bpp] [rotation]\r\n");
		return -1;
	}
	RawImage_t* myImage;
  int bpp = 32;
  int rotation = 0;
  if (argc > 5)
    bpp = atoi(argv[5]);
  if (argc > 6)
    rotation = atoi(argv[6]);
	char* lastDot = strrchr(argv[1], '.');
	if (lastDot && !strcasecmp(lastDot, ".png"))
	{
		FILE* fp = fopen(argv[1], "rb");
		myImage = LoadPNG(fp, atoi(argv[3]), atoi(argv[4]));
		fclose(fp);
	}
	else if (lastDot && !strcasecmp(lastDot, ".gif"))
	{
		int fp = open(argv[1], O_RDONLY | O_BINARY);
		myImage = LoadGIF(fp, atoi(argv[3]), atoi(argv[4]));
		close(fp);
	}
	else if (lastDot && (!strcasecmp(lastDot, ".tif") || !strcasecmp(lastDot, ".tiff")))
	{
		int fp = open(argv[1], O_RDONLY | O_BINARY);
		myImage = LoadTIFF(fp, argv[1], atoi(argv[3]), atoi(argv[4]));
		close(fp);
	}
	else
	{
		FILE* fp = fopen(argv[1], "rb");
		myImage = LoadJPEG(fp, atoi(argv[3]), atoi(argv[4]), bpp, rotation);
		fclose(fp);
	}
	printf("Finished loading image\r\n");fflush(stdout);
	if (!myImage)
	{
		printf("FAILED loading image\r\n");
		return -1;
	}

	FILE* fp = fopen(argv[2], "wb");
	if (strstr(argv[2], ".png"))
	{
		if (SavePNG(myImage, fp))
			printf("FAILED saving PNG image\r\n");
	}
	else if (SaveJPEG(myImage, fp))
	{
		printf("FAILED saving JPEG image\r\n");
	}
	fclose(fp);

	free(myImage->pPlane);
	free(myImage);
	return 0;
}
/**
 * Constructor for the GuiImageData class.
 */
GuiImageData::GuiImageData(const u8 * img, int imgSize)
{
	data = NULL;
    //AnimGif = NULL;
	width = 0;
	height = 0;
	format = GX_TF_RGBA8;

	if(img)
	{
		if (imgSize < 8)
		{
			return;
		}
		if (img[0] == 0xFF && img[1] == 0xD8)
		{
		    // IMAGE_JPEG
			LoadJpeg(img, imgSize);
		}
		else if (img[0] == 0x49 && img[1] == 0x49)
		{
		    // IMAGE_TIFF_PC
            LoadTIFF(img, imgSize);
		}
		else if (img[0] == 0x4D && img[1] == 0x4D)
		{
		    // IMAGE_TIFF_MAC
            LoadTIFF(img, imgSize);
		}
		else if (img[0] == 'B' && img[1] == 'M')
		{
		    // IMAGE_BMP
			LoadBMP(img, imgSize);
		}
		/*else if (img[0] == 'G' && img[1] == 'I' && img[2] == 'F')
		{
		    // IMAGE_GIF
			LoadGIF(img, imgSize);
		}*/
		else if (img[0] == 0x89 && img[1] == 'P' && img[2] == 'N' && img[3] == 'G')
		{
		    // IMAGE_PNG
			LoadPNG(img, imgSize);
		}
		else if ((img[0] == 0xFF && img[1] == 0xFF) || (img[0] == 0xFF && img[1] == 0xFE))
		{
		    // IMAGE_GD
			LoadGD(img, imgSize);
		}
		else if (img[0] == 0x67 && img[1] == 0x64 && img[2] == 0x32 && img[3] == 0x00)
		{
		    // IMAGE_GD2
			LoadGD2(img, imgSize);
		}
		else if (img[0] == 0x00 && img[1] == 0x20 && img[2] == 0xAF && img[3] == 0x30)
		{
		    // IMAGE_TPL
			LoadTPL(img, imgSize);
		}
		//!This must be last since it can also intefere with outher formats
		else if(img[0] == 0x00)
		{
		    // Try loading TGA image
			LoadTGA(img, imgSize);
		}
	}
}