写了一个非常方便的图像读取模块,支持bmp、jpg、gif、png、tiff等,内符详细使用说明和源代码。(仅win2000以上操作系统适用)

fireseed 2003-08-29 10:37:10
使用说明:

1. 在你的硬盘上建立下面三个文件:
ZImage.h——头声明
ZImage.cpp——源文件
WinMain.cpp——范例测试程序

2.把下面的代码按照所给文件名复制到相同的文件中。

3.如果您是VC6.0用户:新建一个win32工程,然后勾上空项目并等待创建成功。
然后在工程管理器里,把上面所述三个文件分别添加到相应文件夹里。编译后即可运行。
如果您是VS.net用户:新建一个win32工程,然后勾上空项目并等待创建成功。
然后在解决方案管理器里,把上面所述三个文件分别添加到相应文件夹里。编译后即可运行。


测试程序使用方法:
在窗口里单击鼠标左键,然后选择一个图像文件,并打开,您就可以在窗口里看到这幅图像了。

附:
1. 如果您仍然无法顺利通过编译,请回复或留言,我将尽快给予答复。
2. 本程序仅供测试使用,使用本程序完全是您的自愿,如果对您的计算机产生任何影响,本人概不负责。
3. 此代码您只能保留一份复本,未经本人允许,您不得通过复制、上传、转贴等手段在互联网上传播此代码,但您可以任意复制本贴子的地址。






//=======================================================================
// ZImage.h
#ifndef ZImage_H
#define ZImage_H

#include <windows.h>
#include <Gdiplus.h>
using namespace Gdiplus;

// 安全的删除指针
#define SAFEDELETE(p) if ( p ) { try{ delete []p; } catch(...){} p = NULL; }
// 封装读取函数,以一次性方便调用。
// r - 返回的指针;s - 要打开的文件名;p - BITMAPINFO结构体指针
#define LOADDZIMAGE( r, s, p ) ManagerZImage( );r = LoadZImage( s, p );ManagerZImage( );
// 断言
#define ASSERT(f) if( (f) ) throw "执行("#f##")时出错!"

// 管理对象起动
void ManagerZImage( void );
// 读取位图文件
LPVOID LoadZImage( char *pFileName, LPBITMAPINFO pbi );
// 释放内存
void FreeZImage( LPVOID pBuf );
// 获取最后一个错误信息字符串
LPCTSTR GetZImageLastError();

#endif







//=======================================================================
// ZImage.cpp
#include "ZImage.h"
#pragma comment( lib, "GdiPlus.lib" )

ULONG_PTR g_GdiPlusToken;
LPTSTR g_szLastErrorMessage;

void ManagerZImage( void )
{
if ( g_GdiPlusToken )
{
GdiplusShutdown( g_GdiPlusToken );
g_GdiPlusToken = NULL;
}
else
{
GdiplusStartupInput GdiPlus;
GdiplusStartup( &g_GdiPlusToken, &GdiPlus, NULL );
}
}

LPVOID ReleaseGdiResource( HDC hdc, HBITMAP hBitmap )
{
if ( hdc )
{
DeleteDC( hdc );
}
if ( hBitmap )
{
DeleteObject( hBitmap );
}
return NULL;
}


LPVOID LoadZImage( char *pFileName, LPBITMAPINFO pbi )
{
HDC hComDC = NULL;
HDC hdc;
HBITMAP hBitmap = NULL;
UINT nWidth, nHeight;
WCHAR szFileName[MAX_PATH];
LPVOID pBuf = NULL;
try
{
ASSERT( NULL == ( hdc = GetDC( NULL )) );
hComDC = CreateCompatibleDC( hdc );
ASSERT( NULL == hdc );
ZeroMemory( szFileName, sizeof(szFileName) );
ASSERT( 0 == MultiByteToWideChar( CP_ACP, MB_USEGLYPHCHARS | MB_ERR_INVALID_CHARS, pFileName, (int)strlen( pFileName ), szFileName, sizeof(szFileName) ) );
Image Img( szFileName );
ASSERT( Ok != Img.GetLastStatus() );
nWidth = Img.GetWidth();
nHeight = Img.GetHeight();
ASSERT( 0 == nWidth * nHeight );
ASSERT( NULL== (hBitmap = CreateCompatibleBitmap( hdc, nWidth, nHeight ) ) );
ASSERT( HGDI_ERROR == SelectObject( hComDC, hBitmap ) );
Graphics g( hComDC );
ASSERT( Ok != g.GetLastStatus() );
ASSERT( Ok != g.DrawImage( &Img, 0, 0, nWidth, nHeight ) );
ZeroMemory( pbi, sizeof(BITMAPINFO) );
pbi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
ASSERT( 0 == GetDIBits( hComDC, hBitmap, 0, 0, NULL, pbi, DIB_RGB_COLORS ) );
DWORD dwBufSize = pbi->bmiHeader.biWidth * pbi->bmiHeader.biHeight * pbi->bmiHeader.biBitCount / 8;
ASSERT( dwBufSize == 0 );
ASSERT( NULL == (pBuf = GlobalAlloc( GMEM_FIXED, dwBufSize ) ) );
ASSERT( 0 == GetDIBits( hComDC, hBitmap, 0, pbi->bmiHeader.biHeight, pBuf, pbi, DIB_RGB_COLORS ) );
}
catch ( char *p )
{
if ( pBuf )
{
GlobalFree( pBuf );
pBuf = NULL;
}
g_szLastErrorMessage = p;
}
ReleaseGdiResource( hdc, hBitmap );
return pBuf;
}

void FreeZImage( LPVOID pBuf )
{
GlobalFree( pBuf );
}

LPCTSTR GetZImageLastError()
{
return NULL == g_szLastErrorMessage ? "" : g_szLastErrorMessage;
}

...全文
853 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eric1006 2003-12-16
  • 打赏
  • 举报
回复
mark
shines77 2003-11-23
  • 打赏
  • 举报
回复
mark
iampolaris 2003-09-01
  • 打赏
  • 举报
回复
mark!
ehom 2003-09-01
  • 打赏
  • 举报
回复
您老是高手啥,我是菜鸟,你和我较什么劲~~~你说通道是指颜色频率,那就是啊,我没学过啊,你说GDI+好就是啊,也没人说他不好,都是我不好,好吧,人家贴人家代码,干嘛说句废话,自讨没趣~~~

像高手学习~~~
fireseed 2003-09-01
  • 打赏
  • 举报
回复
我当然很清楚Tiff是种什么样的文件格式,我好像说了句“由于Tiff的特殊性”。

CIELab、CMYK、YCbCr哪个不常见、不通用?这些都很偏吗?但GDI+只对RGB有很好的支持。我说的编码方式只针对图像数据本身。“能保证90%以上通用的Tiff格式都可以读取”?这只是你说的。PackedBits、RLE、JPEG、LZ77哪个又不通用了?至少我见过的很多Tiff图是Tiff-JPEG的。

==============================================================

这是你说的吧?CIELab、CMYK、YCbCr是颜色格式还是文件(图像)格式?
我晕了
fireseed 2003-09-01
  • 打赏
  • 举报
回复
对了,还有一点忘说了,TIFF的JPEG编码是通俗说法,那只不过把做过傅丽叶变换的JPEG按照TIFF格式存起来罢了,我想任何一部数码机都不大会支持,可否报一下你的数码机的品牌?
fireseed 2003-09-01
  • 打赏
  • 举报
回复
"通道是指不同波段的颜色频率"?我很菜,但也听说过点光的电磁理论,但实在搞不懂楼主的通道是指颜色频率说的是什么?别说通道和颜色频率,就是说通道中的数据的和颜色频率是一会事我都不敢相信.而像除RGB外的其它颜色模型,我都不知道怎么把他们和不同波段的光直接联系起来.
=================================================================

god! 确定你学过《计算机图形图象学》?

我的列表是从头文件里粘过来的,当然没有你打那么多字幸苦啦
ehom 2003-09-01
  • 打赏
  • 举报
回复
楼主楼主,我都不知道如何陪你侃下去~~~我有说过 颜色格式==图像格式?!

我好像从来没有杜撰"颜色格式"这么一个名词出来

按照不同的颜色模型储存像素信息,Tiff的数据格式发生了变化,那它当然是两个不同的文件

"通道是指不同波段的颜色频率"?我很菜,但也听说过点光的电磁理论,但实在搞不懂楼主的通道是指颜色频率说的是什么?别说通道和颜色频率,就是说通道中的数据的和颜色频率是一会事我都不敢相信.而像除RGB外的其它颜色模型,我都不知道怎么把他们和不同波段的光直接联系起来.

当然通道还有Alpha通道,Photoshop最多可以建24个通道(GDI+不支持,但又会试着去解析,当然Photoshop太专业了,那就不多说了)

如果你坚持说在你那不存在BUG,那我只能猜测可能是你的GDIPlus.dll版本和我的不一样.16 Bits/Channel"一般只用在处理专业数据",但这里只是显示,16 Bits/Channel完全可以转为8 Bits/Channel用于显示.

如果本身就是做图像类软件,那当然不会去依靠于GDI+,GDI也不过是用于显示,但我没有去否定GDI+的价值?我只说它的兼任性还不算好.

要说显示照片也行,数码相机我有,可以保存为JPEG,Tiff两种格式,但它输出的Tiff是按JPEG压缩的Tiff图,很不幸,GDI+不支持

这里还不光是很多格式不支持的问题,如果不支持某种格式而解析出错误的图像就应该属于BUG的范畴.

再强调一遍:我只是认为GDI+对图像格式的支持并不是很好,没有其它意思.你一定要认为GDI+对Tiff的支持当然没问题,那我只能得出结论:其他人做的更好,再侃下去没必要.列出那么长的TAG列表也挺辛苦的.

到此为止
ehom 2003-08-31
  • 打赏
  • 举报
回复
我当然很清楚Tiff是种什么样的文件格式,我好像说了句“由于Tiff的特殊性”。

CIELab、CMYK、YCbCr哪个不常见、不通用?这些都很偏吗?但GDI+只对RGB有很好的支持。我说的编码方式只针对图像数据本身。“能保证90%以上通用的Tiff格式都可以读取”?这只是你说的。PackedBits、RLE、JPEG、LZ77哪个又不通用了?至少我见过的很多Tiff图是Tiff-JPEG的。

ACDSee够通用吧?不属于某一领域的专业图像类软件吧?那在保存时调整下压缩方式,GDI+能支持几种?

另外我有说16位变8位吗?16 Bits/Channel :Channel是什么意思不用解释吧?换言之那也就是48位、64位。

打开Photoshop,找副图,调整一下,Image->Mode->CMYK Color、Image->Mode->16 Bits/Channel,然后保存为Tiff格式。用GDI+试试?结果如何?而且这地方明显是个BUG,而不是简单的不支持。因为这里的处理结果也不同于其它不支持的具体图像类型,而GDI+对16 Bits/Channel的RGB图或8 Bits/Channel的CMYK都能支持。

你老是高手,我是菜鸟,但菜鸟说的话就不一定就没验证过,也不一定就是道听途说。
fireseed 2003-08-31
  • 打赏
  • 举报
回复
to ehom(?!)

我晕倒,颜色格式==图像格式?!

在图形图像学里,Channel(通道)的意思就是指不同波段的颜色频率,说白了,在RGB里就是三个通道R、G和B,不知道你所说的Channel是不是这个意思?

按照你的方法我试过了,似乎没有问题,不存在你说的BUG。还是我用photoshop的水准不行?


16bit每通道的位率一般只用在处理专业数据上,因为一般的显卡都不会支持每通道16bit*4通道。这些段码用于显示一些照片,又不是搞全球影像数据分析。你指望我去做一个erdas?
zhaochong12 2003-08-31
  • 打赏
  • 举报
回复
.......不是代码臭~是我看不懂..-_-#..

看不懂才要顶!
Jinhao 2003-08-31
  • 打赏
  • 举报
回复
it is necessary to mark
fogeye 2003-08-31
  • 打赏
  • 举报
回复
mark
Dragon132 2003-08-31
  • 打赏
  • 举报
回复
学习
fireseed 2003-08-30
  • 打赏
  • 举报
回复
呵呵,我是win32/c++程序员,SDK当然是我的老本行。

用了些宏,代码当然短了。这些宏也正是这段代码的精髓所在。
ehom 2003-08-30
  • 打赏
  • 举报
回复
按YCbCr储存的也不支持
ehom 2003-08-30
  • 打赏
  • 举报
回复
我说的,标记是一会事,支持的好不好又是另一会事

GDI+不支持按CIELab储存的Tiff图,对于按CMYK储存的只支持8 Bits/Channel的,读取16 Bits/Channel的图居然也按8 Bits/Channel的去解析...

而很多Tiff都是压缩过的,由于Tiff的特殊性,用于它的编码算法很多,常用的也有10余种,支持不全可以理解(ACDSee支持也不全,XnView做的比较好),但GDI+只支持用LZW压缩的Tiff图.
Creamdog 2003-08-30
  • 打赏
  • 举报
回复

#define PropertyTagPixelUnit 0x5110 // Unit specifier for pixel/unit
#define PropertyTagPixelPerUnitX 0x5111 // Pixels per unit in X
#define PropertyTagPixelPerUnitY 0x5112 // Pixels per unit in Y
#define PropertyTagPaletteHistogram 0x5113 // Palette histogram

// EXIF specific tag

#define PropertyTagExifExposureTime 0x829A
#define PropertyTagExifFNumber 0x829D

#define PropertyTagExifExposureProg 0x8822
#define PropertyTagExifSpectralSense 0x8824
#define PropertyTagExifISOSpeed 0x8827
#define PropertyTagExifOECF 0x8828

#define PropertyTagExifVer 0x9000
#define PropertyTagExifDTOrig 0x9003 // Date & time of original
#define PropertyTagExifDTDigitized 0x9004 // Date & time of digital data generation

#define PropertyTagExifCompConfig 0x9101
#define PropertyTagExifCompBPP 0x9102

#define PropertyTagExifShutterSpeed 0x9201
#define PropertyTagExifAperture 0x9202
#define PropertyTagExifBrightness 0x9203
#define PropertyTagExifExposureBias 0x9204
#define PropertyTagExifMaxAperture 0x9205
#define PropertyTagExifSubjectDist 0x9206
#define PropertyTagExifMeteringMode 0x9207
#define PropertyTagExifLightSource 0x9208
#define PropertyTagExifFlash 0x9209
#define PropertyTagExifFocalLength 0x920A
#define PropertyTagExifMakerNote 0x927C
#define PropertyTagExifUserComment 0x9286
#define PropertyTagExifDTSubsec 0x9290 // Date & Time subseconds
#define PropertyTagExifDTOrigSS 0x9291 // Date & Time original subseconds
#define PropertyTagExifDTDigSS 0x9292 // Date & TIme digitized subseconds

#define PropertyTagExifFPXVer 0xA000
#define PropertyTagExifColorSpace 0xA001
#define PropertyTagExifPixXDim 0xA002
#define PropertyTagExifPixYDim 0xA003
#define PropertyTagExifRelatedWav 0xA004 // related sound file
#define PropertyTagExifInterop 0xA005
#define PropertyTagExifFlashEnergy 0xA20B
#define PropertyTagExifSpatialFR 0xA20C // Spatial Frequency Response
#define PropertyTagExifFocalXRes 0xA20E // Focal Plane X Resolution
#define PropertyTagExifFocalYRes 0xA20F // Focal Plane Y Resolution
#define PropertyTagExifFocalResUnit 0xA210 // Focal Plane Resolution Unit
#define PropertyTagExifSubjectLoc 0xA214
#define PropertyTagExifExposureIndex 0xA215
#define PropertyTagExifSensingMethod 0xA217
#define PropertyTagExifFileSource 0xA300
#define PropertyTagExifSceneType 0xA301
#define PropertyTagExifCfaPattern 0xA302

#define PropertyTagGpsVer 0x0000
#define PropertyTagGpsLatitudeRef 0x0001
#define PropertyTagGpsLatitude 0x0002
#define PropertyTagGpsLongitudeRef 0x0003
#define PropertyTagGpsLongitude 0x0004
#define PropertyTagGpsAltitudeRef 0x0005
#define PropertyTagGpsAltitude 0x0006
#define PropertyTagGpsGpsTime 0x0007
#define PropertyTagGpsGpsSatellites 0x0008
#define PropertyTagGpsGpsStatus 0x0009
#define PropertyTagGpsGpsMeasureMode 0x00A
#define PropertyTagGpsGpsDop 0x000B // Measurement precision
#define PropertyTagGpsSpeedRef 0x000C
#define PropertyTagGpsSpeed 0x000D
#define PropertyTagGpsTrackRef 0x000E
#define PropertyTagGpsTrack 0x000F
#define PropertyTagGpsImgDirRef 0x0010
#define PropertyTagGpsImgDir 0x0011
#define PropertyTagGpsMapDatum 0x0012
#define PropertyTagGpsDestLatRef 0x0013
#define PropertyTagGpsDestLat 0x0014
#define PropertyTagGpsDestLongRef 0x0015
#define PropertyTagGpsDestLong 0x0016
#define PropertyTagGpsDestBearRef 0x0017
#define PropertyTagGpsDestBear 0x0018
#define PropertyTagGpsDestDistRef 0x0019
#define PropertyTagGpsDestDist 0x001A
fireseed 2003-08-30
  • 打赏
  • 举报
回复

#define PropertyTagJPEGProc 0x0200
#define PropertyTagJPEGInterFormat 0x0201
#define PropertyTagJPEGInterLength 0x0202
#define PropertyTagJPEGRestartInterval 0x0203
#define PropertyTagJPEGLosslessPredictors 0x0205
#define PropertyTagJPEGPointTransforms 0x0206
#define PropertyTagJPEGQTables 0x0207
#define PropertyTagJPEGDCTables 0x0208
#define PropertyTagJPEGACTables 0x0209

#define PropertyTagYCbCrCoefficients 0x0211
#define PropertyTagYCbCrSubsampling 0x0212
#define PropertyTagYCbCrPositioning 0x0213
#define PropertyTagREFBlackWhite 0x0214

#define PropertyTagICCProfile 0x8773 // This TAG is defined by ICC
// for embedded ICC in TIFF
#define PropertyTagGamma 0x0301
#define PropertyTagICCProfileDescriptor 0x0302
#define PropertyTagSRGBRenderingIntent 0x0303

#define PropertyTagImageTitle 0x0320
#define PropertyTagCopyright 0x8298

// Extra TAGs (Like Adobe Image Information tags etc.)

#define PropertyTagResolutionXUnit 0x5001
#define PropertyTagResolutionYUnit 0x5002
#define PropertyTagResolutionXLengthUnit 0x5003
#define PropertyTagResolutionYLengthUnit 0x5004
#define PropertyTagPrintFlags 0x5005
#define PropertyTagPrintFlagsVersion 0x5006
#define PropertyTagPrintFlagsCrop 0x5007
#define PropertyTagPrintFlagsBleedWidth 0x5008
#define PropertyTagPrintFlagsBleedWidthScale 0x5009
#define PropertyTagHalftoneLPI 0x500A
#define PropertyTagHalftoneLPIUnit 0x500B
#define PropertyTagHalftoneDegree 0x500C
#define PropertyTagHalftoneShape 0x500D
#define PropertyTagHalftoneMisc 0x500E
#define PropertyTagHalftoneScreen 0x500F
#define PropertyTagJPEGQuality 0x5010
#define PropertyTagGridSize 0x5011
#define PropertyTagThumbnailFormat 0x5012 // 1 = JPEG, 0 = RAW RGB
#define PropertyTagThumbnailWidth 0x5013
#define PropertyTagThumbnailHeight 0x5014
#define PropertyTagThumbnailColorDepth 0x5015
#define PropertyTagThumbnailPlanes 0x5016
#define PropertyTagThumbnailRawBytes 0x5017
#define PropertyTagThumbnailSize 0x5018
#define PropertyTagThumbnailCompressedSize 0x5019
#define PropertyTagColorTransferFunction 0x501A
#define PropertyTagThumbnailData 0x501B// RAW thumbnail bits in
// JPEG format or RGB format
// depends on
// PropertyTagThumbnailFormat

// Thumbnail related TAGs

#define PropertyTagThumbnailImageWidth 0x5020 // Thumbnail width
#define PropertyTagThumbnailImageHeight 0x5021 // Thumbnail height
#define PropertyTagThumbnailBitsPerSample 0x5022 // Number of bits per
// component
#define PropertyTagThumbnailCompression 0x5023 // Compression Scheme
#define PropertyTagThumbnailPhotometricInterp 0x5024 // Pixel composition
#define PropertyTagThumbnailImageDescription 0x5025 // Image Tile
#define PropertyTagThumbnailEquipMake 0x5026 // Manufacturer of Image
// Input equipment
#define PropertyTagThumbnailEquipModel 0x5027 // Model of Image input
// equipment
#define PropertyTagThumbnailStripOffsets 0x5028 // Image data location
#define PropertyTagThumbnailOrientation 0x5029 // Orientation of image
#define PropertyTagThumbnailSamplesPerPixel 0x502A // Number of components
#define PropertyTagThumbnailRowsPerStrip 0x502B // Number of rows per strip
#define PropertyTagThumbnailStripBytesCount 0x502C // Bytes per compressed
// strip
#define PropertyTagThumbnailResolutionX 0x502D // Resolution in width
// direction
#define PropertyTagThumbnailResolutionY 0x502E // Resolution in height
// direction
#define PropertyTagThumbnailPlanarConfig 0x502F // Image data arrangement
#define PropertyTagThumbnailResolutionUnit 0x5030 // Unit of X and Y
// Resolution
#define PropertyTagThumbnailTransferFunction 0x5031 // Transfer function
#define PropertyTagThumbnailSoftwareUsed 0x5032 // Software used
#define PropertyTagThumbnailDateTime 0x5033 // File change date and
// time
#define PropertyTagThumbnailArtist 0x5034 // Person who created the
// image
#define PropertyTagThumbnailWhitePoint 0x5035 // White point chromaticity
#define PropertyTagThumbnailPrimaryChromaticities 0x5036
// Chromaticities of
// primaries
#define PropertyTagThumbnailYCbCrCoefficients 0x5037 // Color space transforma-
// tion coefficients
#define PropertyTagThumbnailYCbCrSubsampling 0x5038 // Subsampling ratio of Y
// to C
#define PropertyTagThumbnailYCbCrPositioning 0x5039 // Y and C position
#define PropertyTagThumbnailRefBlackWhite 0x503A // Pair of black and white
// reference values
#define PropertyTagThumbnailCopyRight 0x503B // CopyRight holder

#define PropertyTagLuminanceTable 0x5090
#define PropertyTagChrominanceTable 0x5091

#define PropertyTagFrameDelay 0x5100
#define PropertyTagLoopCount 0x5101
fireseed 2003-08-30
  • 打赏
  • 举报
回复
下面是定义在:

gdiplusimaging.h里的tiff的tag列表,这也是我至今为止见到的最全的一份!

#define PropertyTagExifIFD 0x8769
#define PropertyTagGpsIFD 0x8825

#define PropertyTagNewSubfileType 0x00FE
#define PropertyTagSubfileType 0x00FF
#define PropertyTagImageWidth 0x0100
#define PropertyTagImageHeight 0x0101
#define PropertyTagBitsPerSample 0x0102
#define PropertyTagCompression 0x0103
#define PropertyTagPhotometricInterp 0x0106
#define PropertyTagThreshHolding 0x0107
#define PropertyTagCellWidth 0x0108
#define PropertyTagCellHeight 0x0109
#define PropertyTagFillOrder 0x010A
#define PropertyTagDocumentName 0x010D
#define PropertyTagImageDescription 0x010E
#define PropertyTagEquipMake 0x010F
#define PropertyTagEquipModel 0x0110
#define PropertyTagStripOffsets 0x0111
#define PropertyTagOrientation 0x0112
#define PropertyTagSamplesPerPixel 0x0115
#define PropertyTagRowsPerStrip 0x0116
#define PropertyTagStripBytesCount 0x0117
#define PropertyTagMinSampleValue 0x0118
#define PropertyTagMaxSampleValue 0x0119
#define PropertyTagXResolution 0x011A // Image resolution in width direction
#define PropertyTagYResolution 0x011B // Image resolution in height direction
#define PropertyTagPlanarConfig 0x011C // Image data arrangement
#define PropertyTagPageName 0x011D
#define PropertyTagXPosition 0x011E
#define PropertyTagYPosition 0x011F
#define PropertyTagFreeOffset 0x0120
#define PropertyTagFreeByteCounts 0x0121
#define PropertyTagGrayResponseUnit 0x0122
#define PropertyTagGrayResponseCurve 0x0123
#define PropertyTagT4Option 0x0124
#define PropertyTagT6Option 0x0125
#define PropertyTagResolutionUnit 0x0128 // Unit of X and Y resolution
#define PropertyTagPageNumber 0x0129
#define PropertyTagTransferFuncition 0x012D
#define PropertyTagSoftwareUsed 0x0131
#define PropertyTagDateTime 0x0132
#define PropertyTagArtist 0x013B
#define PropertyTagHostComputer 0x013C
#define PropertyTagPredictor 0x013D
#define PropertyTagWhitePoint 0x013E
#define PropertyTagPrimaryChromaticities 0x013F
#define PropertyTagColorMap 0x0140
#define PropertyTagHalftoneHints 0x0141
#define PropertyTagTileWidth 0x0142
#define PropertyTagTileLength 0x0143
#define PropertyTagTileOffset 0x0144
#define PropertyTagTileByteCounts 0x0145
#define PropertyTagInkSet 0x014C
#define PropertyTagInkNames 0x014D
#define PropertyTagNumberOfInks 0x014E
#define PropertyTagDotRange 0x0150
#define PropertyTagTargetPrinter 0x0151
#define PropertyTagExtraSamples 0x0152
#define PropertyTagSampleFormat 0x0153
#define PropertyTagSMinSampleValue 0x0154
#define PropertyTagSMaxSampleValue 0x0155
#define PropertyTagTransferRange 0x0156
加载更多回复(14)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧