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. opencv学习之路(38)、Mat像素统计基础——均值,标准差,协方差;特征值,特征向量

    本文部分内容转自 https://www.cnblogs.com/chaosimple/p/3182157.html 一.统计学概念 二.为什么需要协方差 三.协方差矩阵 注:上述协方差矩阵还需要除以 ...

  2. Android中的广播基本实现及回调方法的理解

    在Android中broadcast这一节的内容其实不算多主要是牵扯到一个broadcastreceiver类,这个类是一个抽象类,下面有一个抽象方法onreceiver(),可以再我们收到网络状态变 ...

  3. Python day 03

    dya 03 今日内容 整形 布尔类型 字符串 补充 运算符补充 in value = '我是中国人' # 判断'中国'是否是value所代指的字符串的子序列. v1 = '中国' in value ...

  4. Educational Codeforces Round 48 (Rated for Div. 2)

    http://codeforces.com/contest/1016 A. 没想到这个也会TLE,太粗心了 B. 暴力就好了,多情况讨论又出错... 思路跟我一样的解法   为什么我做了那么多讨论,原 ...

  5. 9、Docker私有registry

    Docker Registry分类 Docker 默认是使用https的,但是如果在自己得私有局域网中,你指明使用http也是可以的. Registry主要的作用是托管镜像: 运行docker reg ...

  6. vim 翻页命令

    整页翻页 ctrl-f:向下翻一页    f含义:forword ctrl-b:向上翻一页    b含义:backward 翻半页 ctrl-d:向下翻半页  d含义:down ctlr-u:向上翻半 ...

  7. Python读写txt文件时的编码问题

    这个问题来自于一个小伙伴,他在处理中文数据时需要先把里面的文本过滤然后分词,因为里面有许多符号,不仅是中文标点符号,还有✳,emoji等奇怪的符号. 正常情况下,中文的str经过encode('utf ...

  8. idea for Mac for循环快捷键

    1.itar 生成array for代码块 for (int i = 0; i < array.length; i++) { = array[i]; } 2.itco 生成Collection迭 ...

  9. 《Clean Code》阅读笔记

    Chapter 2  命名 命名要表现意图 避免歧义和误导,增强区分 命名可读性:便于发音,增强印象,便于交流 命名可查性:增强区分,便于搜索 类和对象的命名:名词或名词短语 方法的命名:动词或动词短 ...

  10. Centos 6.6 安装

    说明:使用VMware进行安装.安装VMware软件及创建虚拟机步骤省略,从正式安装开始. 1.开启虚拟机后稍等,直到出现如下界面: 2.选择第一项,进入光盘介质检查界面. 一般直接跳过点击skip, ...