MemoryBMP "{b96b3caa-0728-11d3-9d7b-0000f81ef32e}"
2 Bmp "{b96b3cab-0728-11d3-9d7b-0000f81ef32e}"
Emf "{b96b3cac-0728-11d3-9d7b-0000f81ef32e}"
Wmf "{b96b3cad-0728-11d3-9d7b-0000f81ef32e}"
Jpeg "{b96b3cae-0728-11d3-9d7b-0000f81ef32e}"
Png "{b96b3caf-0728-11d3-9d7b-0000f81ef32e}"
7 Gif "{b96b3cb0-0728-11d3-9d7b-0000f81ef32e}"
Tiff "{b96b3cb1-0728-11d3-9d7b-0000f81ef32e}"
Exif "{b96b3cb2-0728-11d3-9d7b-0000f81ef32e}"
PhotoCD "{b96b3cb3-0728-11d3-9d7b-0000f81ef32e}"
FlashPIX "{b96b3cb4-0728-11d3-9d7b-0000f81ef32e}"
Icon "{b96b3cb5-0728-11d3-9d7b-0000f81ef32e}"
         static int GetImageEncoder(GpImage* image, CLSID* clsidEncoder)
{
int f = ;
uint uenc = 0u, usize = 0u;
GUID guid;
if (GdipGetImageEncodersSize(&uenc, &usize) == )
{
ImageCodecInfo* pici = (ImageCodecInfo*)LocalAlloc(0u, (void*)usize);
if (GdipGetImageEncoders(uenc, usize, pici) == )
{
if (GdipGetImageRawFormat(image, &guid) == )
{
for (int i = ; i < uenc; i++)
{
if (pici->FormatID == guid)
{
*clsidEncoder = pici->Clsid;
f = ;
break;
}
pici++;
}
}
}
LocalFree(pici);
}
return f;
}
         static int GetEncoderClsid(GUID format, CLSID* clsidEncoder)
{
int f = ;
uint uenc = 0u, usize = 0u;
if (GdipGetImageEncodersSize(&uenc, &usize) == )
{
ImageCodecInfo* pici = (ImageCodecInfo*)LocalAlloc(0u, (void*)usize);
if (GdipGetImageEncoders(uenc, usize, pici) == )
{
for (int i = ; i < uenc; i++)
{
if (pici->FormatID == format)
{
*clsidEncoder = pici->Clsid;
f = ;
break;
}
pici++;
}
}
GlobalFree(pici);
}
return f;
}
      static int GetEncoderClsid(string format, CLSID* clsidEncoder)
{
int f = ;
uint uenc = 0u, usize = 0u;
ushort* psz = _L(format);
if (GdipGetImageEncodersSize(&uenc, &usize) == )
{
ImageCodecInfo* pici = (ImageCodecInfo*)LocalAlloc(0u, (void*)usize);
if (GdipGetImageEncoders(uenc, usize, pici) == )
{
for (int i = ; i < uenc; i++)
{
if (lstrcmpW(pici->MimeType, psz) == )
{
*clsidEncoder = pici->Clsid;
f = ;
break;
}
pici++;
}
}
GlobalFree(pici);
}
_Lr(psz);
return f;
}
         static int GetImageLength(GpImage* image, GUID format, void** usize)
{
int f = ;
CLSID clsid;
if (GetEncoderClsid(format, &clsid) != )
{
void* hgbl = GlobalAlloc(GMEM_MOVEABLE, null);
void* pstm;
if (SUCCEEDED(CreateStreamOnHGlobal(hgbl, , &pstm)))
{
if (GdipSaveImageToStream(image, pstm, &clsid, null) == )
{
*usize = GlobalSize(hgbl);
f = ;
}
//Marshal.Release((IntPtr)pstm);
}
GlobalFree(hgbl);
}
return f;
}
         static int GetImageLength(GpImage* image, string format, void** usize)
{
int f = ;
CLSID clsid;
if (GetEncoderClsid(format, &clsid) != )
{
void* hgbl = GlobalAlloc(GMEM_MOVEABLE, null);
void* pstm;
if (SUCCEEDED(CreateStreamOnHGlobal(hgbl, , &pstm)))
{
if (GdipSaveImageToStream(image, pstm, &clsid, null) == )
{
*usize = GlobalSize(hgbl);
f = ;
}
//Marshal.Release((IntPtr)pstm);
}
GlobalFree(hgbl);
}
return f;
}
 //invoke:
GpImage* image;
uint usize;
/*
...
Create or Load Image
...
*/
GetImageLength(image, "image/jpeg", &usize);

C# [GDI+] [API] Get Image bytes Length的更多相关文章

  1. C# [Win32] [GDI+] [API] Load HFONT from Memory

    // gdiplusenums.h //-------------------------------------------------------------------------- // Fo ...

  2. 跨域请求——WebClient通过get和post请求api

    AJAX不可以实现跨域请求,经过特殊处理才行.一般后台可以通过WebClient实现跨域请求~ //get 请求        string url = string.Format("htt ...

  3. 微软Face API体验——人脸检测

    微软推出了全新REST API,现在可免费获取密钥,大家可以赶快申请!申请地址:https://cn.projectoxford.ai/subscription 看了网站的API介绍,忍不住赶快体验一 ...

  4. c# 请求api获得json数据

    public static string HttpGet(string Url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Creat ...

  5. GDI+编程说明及小结

    原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加) ...

  6. 翻译Android USB HOST API

    翻译Android USB HOST API 源代码地址:http://developer.android.com/guide/topics/connectivity/usb/host.html 译者 ...

  7. 转载-常用API接口签名验证参考

    原文地址: http://www.cnblogs.com/hnsongbiao/p/5478645.html 写的很好,就做个笔记了.感谢作者! 项目中常用的API接口签名验证方法: 1. 给app分 ...

  8. GDI编程

    图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI函数调用),并将它们传给相应的设备驱动程序,完成特定于硬件的输出,象打印机输出和屏幕输出.GDI负责Wind ...

  9. GDI编程小结

    图形设备接口(GDI)是一个可运行程序,它接受Windows应用程序的画图请求(表现为GDI函数调用),并将它们传给对应的设备驱动程序,完毕特定于硬件的输出,象打印机输出和屏幕输出.GDI负责Wind ...

随机推荐

  1. 使用go-template自定义kubectl get输出

    kubectl get相关资源,默认输出为kubectl内置,一般我们也可以使用-o json或者-o yaml查看其完整的资源信息.但是很多时候,我们需要关心的信息并不全面,因此我们需要自定义输出的 ...

  2. 关于Tomcat启动时,长时间停在Initializing Spring root webApplicationContext处的原因

    1.大家肯定经常会遇到这样的问题,以前启动tomcat都不会出问题.现在一起动就会卡到Initializing Spring root webApplicationContext处,tomcat会报连 ...

  3. python进阶(一)

    一.调试Debugging应用 (1)命令行内运行 $ python -m pdb my_script.py 这会触发debugger在脚本第⼀⾏指令处停⽌执⾏.这在脚本很短时会很有帮助.你可以通过( ...

  4. Python模块1

    序列化模块: 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 序列化的目的 1.以某种存储形式使自定义对象持久化: 2.将对象从一个地方传递到另一个地方. 3.使程序更具维护性. jso ...

  5. ARDUINO入门按键通信试验

    1.1按键实验 1.需要学习的知识: 1) Arduino 的输入口配置方法,配置函数的用法 通过pinMode()函数,可以将ADUINO的引脚配置(INPUT)输入模式 2) 搞懂什么是抖动 机械 ...

  6. Java基础学习-Eclipse综述和运算符的使用

    1.Eclipse的概述(磨刀不误砍柴工)       -Eclipse是一个IDE(集成开发环境)         -IDE(Intergrated Development Environment) ...

  7. Git访问远程出现错误

    错误示例 remote: HTTP Basic: Access denied fatal: Authentication failed for "xxx" 错误原因 由于修改了公司 ...

  8. [转载]EXCEL绝对引用中$A$1、A$1、$A1三个的区别?

    转自:https://zhidao.baidu.com/question/167695289.html EXCEL绝对引用中$A$1.A$1.$A1三个的区别? 符号“$”加在不地方的含义有何不同? ...

  9. Pandorabox(Openwrt) 双宽带(WAN) 叠加网络实战

    准备 一台已经刷好Pandorabox(Openwrt)的路由器.两条宽带 实战环境 固件:PandoraBox R8.1.12 By Lean 硬件:K2P A1版 过程 配置VLAN 为了将一个L ...

  10. 内网环境使用ansible安装software 需要外网时,如何绑定代理呢

    内网环境使用ansible安装software 需要外网时,如何绑定代理呢? 方法一: 在ansible 的脚本里,yum install 的地方,添加语句: environment: https_p ...