BOOL savePNG( const char *fileName, HBITMAP hBitmap ) { const char intermediateFilename[MAX_PATH] = "tempTmp.png"; BOOL ret = FALSE; ret = saveBmp( fileName, hBitmap ); if ( ret ) { int r = bmp2png( fileName, intermediateFilename ); ret = !r ? TRUE : FALSE; } unlink( fileName ); rename( intermediateFilename, fileName ); return ( ret ); }
int main(int argc, char* argv[]) { int ret=0; int fHandle; psd_context * context=NULL; ret = IsBigEndian(); if (!ret) printf("we are using little endian, psd image file stream byte order is big endian! need convert\n"); else printf("we are using big endian\n"); if (argc == 1) { printfHelp(); return 0; } if (!strcmp(argv[1],"psd2bmp")) { Psd2Bmp("..\\..\\pic\\tianye_all.psd","..\\..\\pic\\tianye_all.bmp"); Psd2Bmp("..\\..\\pic\\tianye_new.psd","..\\..\\pic\\tianye_new.jpg"); Psd2Png("..\\..\\pic\\tianye_all.psd","..\\..\\pic\\tianye_all.png"); } else if (!strcmp(argv[1],"merge")) { MergeTwoPngFile("..\\..\\pic\\bg.png","..\\..\\pic\\tianye.png","..\\..\\pic\\merge.png",180); } else if (!strcmp(argv[1],"bmp2psd")) { //CreateDemoPsdFile("..\\..\\pic\\tianye_new.psd","..\\..\\pic\\tianye.png"); fHandle = PsdNewFile("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye.bmp"); printf("new one psd file, ret=%d\n",fHandle); if (ret>=0) { ret = PsdNewLayer(fHandle,"..\\..\\pic\\ms12.png",0,0,1,200); // ret = PsdNewLayer(fHandle,"..\\..\\pic\\ms12.png",200,200,2,200); // PsdSetLayerDirection(fHandle,1,RIGHT90); // PsdSetLayerDirection(fHandle,1,LEFT90); //PsdSetLayerBrightness(fHandle,1,-0); //PsdSetLayerContrast(fHandle,1,-50); PsdSaveFile(fHandle); PsdCloseFile(fHandle); //must close firstly before load again... } // Psd2Bmp("..\\..\\pic\\tianye_new.psd","..\\..\\pic\\tianye_new_tmp.bmp"); Psd2Png("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye_1_tmp.png"); //pngzoom("..\\..\\pic\\tianye_new_tmp.png",50); } else if (!strcmp(argv[1],"psd2psd")) { //fHandle = PsdLoadFile("..\\..\\pic\\tianye_1.psd"); //tianye_1.psd has two layers already fHandle = PsdNewFile("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye.bmp"); if (fHandle>=0) { //ret = PsdNewLayer(fHandle,"..\\..\\pic\\ms12.png",200,200,2,200); ret = PsdCreateLayer(fHandle,"..\\..\\pic\\ms12.png",200,200,100,200,2,200); ret = PsdSaveFile(fHandle); ret = PsdCloseFile(fHandle); Psd2Png("..\\..\\pic\\tianye_1.psd","..\\..\\pic\\tianye_1.png"); } else { printf("fail to load psd file. ret=%d\n",ret); } } else if (!strcmp(argv[1],"bmp2bmp")) { ret = bmp2bmp("..\\..\\pic\\tianye.bmp","..\\..\\pic\\tianye_tmp.bmp"); if (ret>=0) { printf("bmp convert to bmp successfully!\n"); } } else if (!strcmp(argv[1],"jpg2bmp")) { //ret = jpg2bmp("..\\..\\pic\\testimg.jpg","..\\..\\pic\\testimg.bmp"); ret = jpg2bmp("..\\..\\pic\\puke.jpg","..\\..\\pic\\puke_tmp.bmp"); if (ret>=0) { printf("jpg convert to bmp successfully!\n"); } } else if (!strcmp(argv[1],"bmp2jpg")) { ret = bmp2jpg("..\\..\\pic\\tianye.bmp","..\\..\\pic\\tianye.jpg"); if (ret>=0) { printf("bmp convert to jpg successfully!\n"); } } else if (!strcmp(argv[1],"png2bmp")) { //ret = png2bmp("..\\..\\pic\\mxp.png","..\\..\\pic\\mxp_tmp.bmp"); ret = png2bmp("..\\..\\pic\\ms12.png","..\\..\\pic\\ms12_tmp.bmp"); // ret = png2bmp("..\\..\\pic\\lisa.png","..\\..\\pic\\lisa_tmp.bmp"); //can NOT load lisa.png into RAM if (ret>=0) { printf("png convert to bmp successfully!\n"); } } else if (!strcmp(argv[1],"bmp2png")) { ret = bmp2png("..\\..\\pic\\Bliss.bmp","..\\..\\pic\\Bliss.png"); if (!ret) { printf("bmp convert to png successfully!\n"); } } else if (!strcmp(argv[1],"pngcrop")) { ret = bmp2png("..\\..\\pic\\Bliss.bmp","..\\..\\pic\\Bliss.png"); //ret = pngzoom("..\\..\\pic\\Bliss.png",100); ret=pngcrop("..\\..\\pic\\Bliss.png",600,400); } else ; return 0; }