文档章节

再学 GDI+[102]: TGPImage(22) - 获取所有解码器的详细信息

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 852
阅读 19
收藏 0
本例运行结果:
Clsid: {557CF400-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAB-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in BMP Codec
DllName: 
FormatDescription: BMP
FilenameExtension: *.BMP;*.DIB;*.RLE
MimeType: image/bmp
Flags: 65543
Version: 1
SigCount: 1
SigSize: 2

Clsid: {557CF401-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAE-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in JPEG Codec
DllName: 
FormatDescription: JPEG
FilenameExtension: *.JPG;*.JPEG;*.JPE;*.JFIF
MimeType: image/jpeg
Flags: 65543
Version: 1
SigCount: 1
SigSize: 2

Clsid: {557CF402-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB0-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in GIF Codec
DllName: 
FormatDescription: GIF
FilenameExtension: *.GIF
MimeType: image/gif
Flags: 65543
Version: 1
SigCount: 2
SigSize: 6

Clsid: {557CF403-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAC-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in EMF Codec
DllName: 
FormatDescription: EMF
FilenameExtension: *.EMF
MimeType: image/x-emf
Flags: 65542
Version: 1
SigCount: 1
SigSize: 44

Clsid: {557CF404-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAD-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in WMF Codec
DllName: 
FormatDescription: WMF
FilenameExtension: *.WMF
MimeType: image/x-wmf
Flags: 65542
Version: 1
SigCount: 1
SigSize: 4

Clsid: {557CF405-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB1-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in TIFF Codec
DllName: 
FormatDescription: TIFF
FilenameExtension: *.TIF;*.TIFF
MimeType: image/tiff
Flags: 65543
Version: 1
SigCount: 2
SigSize: 2

Clsid: {557CF406-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CAF-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in PNG Codec
DllName: 
FormatDescription: PNG
FilenameExtension: *.PNG
MimeType: image/png
Flags: 65543
Version: 1
SigCount: 1
SigSize: 8

Clsid: {557CF407-1A04-11D3-9A73-0000F81EF32E}
FormatID: {B96B3CB5-0728-11D3-9D7B-0000F81EF32E}
CodecName: Built-in ICO Codec
DllName: 
FormatDescription: ICO
FilenameExtension: *.ICO
MimeType: image/x-icon
Flags: 65542
Version: 1
SigCount: 1
SigSize: 4

 
 
 
 
 

 

 

  
代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses GDIPOBJ, GDIPAPI;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Align := alLeft;
  Memo1.ScrollBars := ssBoth;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  num, size: Cardinal;
  ImageCodecInfo: PImageCodecInfo;
  i: Integer;
type
  ArrImgCodInfo = array of TImageCodecInfo;
begin
  GetImageDecodersSize(num, size);
  GetMem(ImageCodecInfo, size);
  GetImageDecoders(num, size, ImageCodecInfo);

  Memo1.Clear;
  for i := 0 to num - 1 do with Memo1.Lines do
  begin
    Add(format('Clsid: %s',[GUIDToString(ArrImgCodInfo(ImageCodecInfo)[i].Clsid)]));
    Add(format('FormatID: %s',[GUIDToString(ArrImgCodInfo(ImageCodecInfo)[i].FormatID)]));
    Add(format('CodecName: %s',[ArrImgCodInfo(ImageCodecInfo)[i].CodecName]));
    Add(format('DllName: %s',[ArrImgCodInfo(ImageCodecInfo)[i].DllName]));
    Add(format('FormatDescription: %s',[ArrImgCodInfo(ImageCodecInfo)[i].FormatDescription]));
    Add(format('FilenameExtension: %s',[ArrImgCodInfo(ImageCodecInfo)[i].FilenameExtension]));
    Add(format('MimeType: %s',[ArrImgCodInfo(ImageCodecInfo)[i].MimeType]));
    Add(format('Flags: %d',[ArrImgCodInfo(ImageCodecInfo)[i].Flags]));
    Add(format('Version: %d',[ArrImgCodInfo(ImageCodecInfo)[i].Version]));
    Add(format('SigCount: %d',[ArrImgCodInfo(ImageCodecInfo)[i].SigCount]));
    Add(format('SigSize: %d',[ArrImgCodInfo(ImageCodecInfo)[i].SigSize]));
    Add('');
  end;

  FreeMem(ImageCodecInfo);
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 206
  ClientWidth = 445
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object Memo1: TMemo
    Left = 8
    Top = 8
    Width = 337
    Height = 145
    Lines.Strings = (
      'Memo1')
    TabOrder = 0
  end
  object Button1: TButton
    Left = 351
    Top = 32
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 1
    OnClick = Button1Click
  end
end

 
 
 
 
 

 

 

  
Clsid              //获取或设置 Guid 结构,其中包含能识别特定编码解码器的 GUID。 
FormatID           //获取或设置 Guid 结构,其中包含用于识别编码解码器格式的 GUID。 
CodecName          //获取或设置包含编码解码器名称的字符串。 
DllName            //获取或设置包含存放编码解码器的 DLL 的路径名字符串。如果编码解码器不在 DLL 中,则该指针为空。 
FormatDescription  //获取或设置描述编码解码器的文件格式的字符串。 
FilenameExtension  //获取或设置包含编码解码器中使用的文件扩展名的字符串。这些扩展名用分号分隔。 
MimeType           //获取或设置包含编码解码器的多用途网际邮件扩充协议 (MIME) 类型的字符串。
Flags              //获取或设置用于存储有关编码解码器的其他信息的 32 位值。该属性从 ImageCodecFlags 枚举返回若干标志的组合。 
Version            //获取或设置编码解码器的版本号。 
SigMask            //获取或设置可用作筛选器的二维字节数组。 
SigPattern         //获取或设置表示编码解码器签名的二维字节数组。

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/07/10/1240049.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。 寻仙、穿越火线、征途、天龙八部……同时在线...

stone15165
2018/05/05
0
0
C# chart控件绘制曲线

在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图、柱状图什么的了。 参考文章 1. 使用....

橘子红了呐
2017/11/07
0
0
学习FFmpeg API – 解码视频

ffmpeg是编解码的利器,用了很久,以前看过dranger 的教程,非常精彩,受益颇多,是学习ffmpeg api很好的材料。可惜的是其针对的ffmpeg版本已经比较老了,而ffmpeg的更新又很快,有些API已经...

霄霄月月
2012/05/08
0
32
Hadoop3.0 HDFS擦除编码

目的 复制是昂贵的 - HDFS中的默认3x复制方案在存储空间和其他资源(例如网络带宽)上具有200%的开销。但是,对于I / O活动相对较低的热数据集和冷数据集,在正常操作期间很少访问额外的块副...

ghwolf1124
2017/11/23
0
0
杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?

在前文 SharpDX之Direct2D教程II——加载位图文件和保存位图文件 中,发现在VB2010中不能很好的运用SharpDx中的WIC组件进行图片的编码工作。可能是我的设置问题,也可能是SharpDx对VB2010支持...

万仓一黍
2013/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(11.9)hive操作基础知识

上一篇博客分享了hive的简介和初体验,本节博主将继续分享一些hive的操作的基础知识。 DDL操作 (1)创建表 #建表语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name ...

em_aaron
今天
4
0
OSChina 周四乱弹 —— 我家猫真会后空翻

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听这个# 我艇牛逼,百听不厌,太好听辣 分享 Led Zeppelin 的歌曲《Stairway To Heaven》 《Stairway To Heaven》- Led Z...

小小编辑
今天
26
3
node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 安装electron-rebuild cnpm ins......

Chason-洪
今天
3
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
3
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部