IMGCONV.EXE
摘要:
==========================================================
命令行图片格式转换工具,支持bmp、png、gif、jpg、jpeg、tiff、exif、ico等多种图片格式互转。
==========================================================
链接: https://pan.baidu.com/s/158gWUQQYytCUo5ULGXCROg?pwd=fp8h
用法:
-----------------------------------------------------------------------------
imgconv [input] [output]
-----------------------------------------------------------------------------
示例:
-----------------------------------------------------------------------------
imgconv test.ico test.png //将ico图标转为透明png
-----------------------------------------------------------------------------
备注:
-----------------------------------------------------------------------------
CONSOLE PICTURE FORMAT CONVERSION TOOL, VERSION 1.0
-----------------------------------------------------------------------------
imgconv [input] [output]
-----------------------------------------------------------------------------
Support bmp png gif jpg jpeg tiff exif ico
-----------------------------------------------------------------------------
COPYRIGHT@2017~2019 BY HAPPY,2017-02-06"
原创代码: | | | | | | | | | | | #include <stdio.h> | | #include <windows.h> | | #include <gdiplus.h> | | #pragma comment(lib, "GdiPlus.lib") | | | | using namespace Gdiplus; | | | | | | #define HELP_INFORMATION "\ | | -----------------------------------------------------------------\n\ | | CONSOLE PICTURE FORMAT CONVERSION TOOL, VERSION 1.0\n\ | | -----------------------------------------------------------------\n\ | | imgconv [input] [output]\n\ | | -----------------------------------------------------------------\n\ | | Support bmp png gif jpg jpeg tiff exif ico\n\ | | -----------------------------------------------------------------\n\ | | COPYRIGHT@2017~2019 BY HAPPY,2017-02-06" | | | | | | WCHAR* L(const CHAR* str) | | { | | if(!str){return NULL;} | | int wLen=MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, -1, NULL, 0); | | WCHAR* wstr=(WCHAR*)malloc(sizeof(WCHAR)*wLen + 1); | | MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, -1, wstr, wLen); | | wstr[wLen]='\0'; | | return wstr; | | } | | | | | | BOOL GetEncoderClsid(const WCHAR* format, CLSID* pClsid) | | { | | UINT j, n=0, s=0; | | ImageCodecInfo* pInfo=NULL; | | GetImageEncodersSize(&n, &s); | | if(s==0){return FALSE;} | | pInfo=(ImageCodecInfo*)(malloc(s)); | | if(pInfo==NULL){return FALSE;} | | GetImageEncoders(n, s, pInfo); | | for(j=0; j<n; j++){ | | if(wcscmp(pInfo[j].MimeType, format)==0){ | | *pClsid=pInfo[j].Clsid; | | free(pInfo); | | return TRUE; | | } | | } | | free(pInfo); | | return FALSE; | | } | | | | | | int main(int argc, char** argv) | | { | | if(argc!=3){ | | | | fputs(HELP_INFORMATION, stderr); | | exit(1); | | } | | CHAR *p=argv[2], *formatSTR=NULL; | | while(*p!='\0'){p++;} | | int l=p-argv[2]; | | if(l<4){ | | | | fputs("The extension is too short", stderr); | | exit(1); | | } | | if(argv[2][l-4]=='.'){ | | switch(argv[2][l-3]){ | | case 'b': | | formatSTR="image/bmp"; | | break; | | case 'p': | | formatSTR="image/png"; | | break; | | case 'g': | | formatSTR="image/gif"; | | break; | | case 'i': | | formatSTR="image/ico"; | | break; | | case 'j': | | formatSTR="image/jpeg"; | | break; | | default: | | | | fputs("Wrong picture conversion format", stderr); | | exit(1); | | } | | }else if(argv[2][l-5]=='.'){ | | switch(argv[2][l-4]){ | | case 'j': | | formatSTR="image/jpeg"; | | break; | | case 't': | | formatSTR="image/tiff"; | | break; | | case 'e': | | formatSTR="image/exif"; | | break; | | default: | | | | fputs("Wrong picture conversion format", stderr); | | exit(1); | | } | | }else{ | | | | fputs("Wrong picture conversion format", stderr); | | exit(1); | | } | | | | | | ULONG_PTR gdipludToken; | | GdiplusStartupInput gdiplusInput; | | GdiplusStartup(&gdipludToken,&gdiplusInput,NULL); | | | | Image* srcIMG=Image::FromFile(L(argv[1])); | | CLSID clsid; | | if(GetEncoderClsid(L(formatSTR), &clsid)){ | | | | srcIMG->Save(L(argv[2]), &clsid, NULL); | | }else{ | | | | fputs("Can't conversion format", stderr); | | exit(1); | | } | | | | GdiplusShutdown(gdipludToken); | | return 0; | | }COPY |
|