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. anaconda中安装mmdetection

    1.新建conda环境(有则跳过)     conda create -n py36 python=3.6 && source activate py36 2.安装pytorch    ...

  2. Introducation of Servlet filter(servlet过滤器介绍 )

    本文章向大家介绍Servlet Filter,主要包括 Servlet Filter使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下. 过滤器是一个可以转换 ...

  3. Bootstrap如何实现导航条?导航条实例详解

    本文主要和大家分享Bootstrap实现导航实例详解,在建设一个网站的时候,不同的页面有很多元素是一样的,比如导航条.侧边栏等,我们可以使用模板的继承,避免重复编写html代码.现在我们打算实现一个在 ...

  4. tomcat 监控脚本

    ps -ef |grep tomcat |grep -w 'atlassian'|grep -v 'grep'|awk '{print $2}' curl -s -o /dev/null -m 10 ...

  5. node一些相关

    1.Node node的核心语言是JavaScript ,基于Google的V8引擎. 2.node使用 找到当前文件所在目录 node  文件名.js 直接用绝对路径 在当前目录打开命令窗口 3.n ...

  6. java三种注释以及参数涵义(转)

    原文地址:https://www.cnblogs.com/miys/p/4bf714ce33068dcf9ac6526309c9b5e6.html 单行注释:// 注释内容 多行注释:/*... 注释 ...

  7. Django project troubleshootings

    1. 当django project文件夹放到cgi-bin目录下面时会出现下面的错误: [Wed Jan 09 01:52:52.611690 2019] [core:notice] [pid 15 ...

  8. win10家庭版安装Docker for Windows

    0. 背景 硬件:小米笔记本 Air 13/Inter Core i7-7500U 操作系统:Windows 10 家庭中文版 补丁:截止2019/1/25最新稳定补丁 Docker:Docker W ...

  9. Scss 与 Sass 是什么,他们的区别在哪里?

    转载自:http://yunkus.com/difference-between-scss-sass/ 要想了解Scss 与 Sass 是什么以及他们的区别又在哪里,我们不过不先从他们各自的定义说起. ...

  10. UI组件--element-ui--Upload多组件自定义上传

    需求: 提交详细信息的表单, 并上传对应图片(如下图), 后台接口要求表单数据和图片需要一次上传完成.. 分析: 实际上, 每个element-ui Upload组件都应发送一次请求, 很明显不符合我 ...