⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageenio.pas

📁 ·ImageEn 2.3.0 ImageEn一组用于图像处理、查看和分析的Delphi控件。能够保存几种图像格式
💻 PAS
📖 第 1 页 / 共 5 页
字号:
(*
Copyright (c) 1998-2007 by HiComponents. All rights reserved.

This software comes without express or implied warranty.
In no case shall the author be liable for any damage or unwanted behavior of any
computer hardware and/or software.

HiComponents grants you the right to include the compiled component
in your application, whether COMMERCIAL, SHAREWARE, or FREEWARE,
BUT YOU MAY NOT DISTRIBUTE THIS SOURCE CODE OR ITS COMPILED .DCU IN ANY FORM.

ImageEn, IEvolution and ImageEn ActiveX may not be included in any commercial,
shareware or freeware libraries or components.

email: support@hicomponents.com

http://www.hicomponents.com
*)

unit imageenio;

{$R-}
{$Q-}

{$I ie.inc}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ieview,
  ImageEnProc, ExtCtrls, hyiedefs, hyieutils, Dialogs,
{$IFDEF IEINCLUDETWAIN}
  ietwain,
{$ENDIF}
{$IFDEF IEINCLUDEWIA}
  iewia,
{$ENDIF}
{$IFDEF IEINCLUDEDIRECTSHOW}
  ieds,
{$ENDIF}
  printers;

{$IFDEF FPC}
uses SysUtils,Types,Classes,ieview,imageenproc,hyiedefs,hyieutils;
{$ENDIF}

const
  IEMAXICOIMAGES = 16;

  // Jpeg markers
  JPEG_APP0 = $E0;
  JPEG_APP1 = $E1;
  JPEG_APP2 = $E2;
  JPEG_APP3 = $E3;
  JPEG_APP4 = $E4;
  JPEG_APP5 = $E5;
  JPEG_APP6 = $E6;
  JPEG_APP7 = $E7;
  JPEG_APP8 = $E8;
  JPEG_APP9 = $E9;
  JPEG_APP10 = $EA;
  JPEG_APP11 = $EB;
  JPEG_APP12 = $EC;
  JPEG_APP13 = $ED;
  JPEG_APP14 = $EE;
  JPEG_APP15 = $EF;
  JPEG_COM = $FE;

  // Standard TWain sizes
  IETW_NONE = 0;
  IETW_A4LETTER = 1;
  IETW_B5LETTER = 2;
  IETW_USLETTER = 3;
  IETW_USLEGAL = 4;
  IETW_A5 = 5;
  IETW_B4 = 6;
  IETW_B6 = 7;
  IETW_USLEDGER = 9;
  IETW_USEXECUTIVE = 10;
  IETW_A3 = 11;
  IETW_B3 = 12;
  IETW_A6 = 13;
  IETW_C4 = 14;
  IETW_C5 = 15;
  IETW_C6 = 16;
  IETW_4A0 = 17;
  IETW_2A0 = 18;
  IETW_A0 = 19;
  IETW_A1 = 20;
  IETW_A2 = 21;
  IETW_A4 = IETW_A4LETTER;
  IETW_A7 = 22;
  IETW_A8 = 23;
  IETW_A9 = 24;
  IETW_A10 = 25;
  IETW_ISOB0 = 26;
  IETW_ISOB1 = 27;
  IETW_ISOB2 = 28;
  IETW_ISOB3 = IETW_B3;
  IETW_ISOB4 = IETW_B4;
  IETW_ISOB5 = 29;
  IETW_ISOB6 = IETW_B6;
  IETW_ISOB7 = 30;
  IETW_ISOB8 = 31;
  IETW_ISOB9 = 32;
  IETW_ISOB10 = 33;
  IETW_JISB0 = 34;
  IETW_JISB1 = 35;
  IETW_JISB2 = 36;
  IETW_JISB3 = 37;
  IETW_JISB4 = 38;
  IETW_JISB5 = IETW_B5LETTER;
  IETW_JISB6 = 39;
  IETW_JISB7 = 40;
  IETW_JISB8 = 41;
  IETW_JISB9 = 42;
  IETW_JISB10 = 43;
  IETW_C0 = 44;
  IETW_C1 = 45;
  IETW_C2 = 46;
  IETW_C3 = 47;
  IETW_C7 = 48;
  IETW_C8 = 49;
  IETW_C9 = 50;
  IETW_C10 = 51;
  IETW_USSTATEMENT = 52;
  IETW_BUSINESSCARD = 53;

type

{!!
<FS>TIETextFormat

<FM>Declaration<FC>
}
  TIETextFormat = (ietfPascal, ietfHEX, ietfBase64, ietfASCIIArt);
{!!}

{!!
<FS>TIEAcquireApi

<FM>Declaration<FC>
TIEAcquireApi = (ieaTWain, ieaWIA);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>ieaTWain</C> <C>acquire from Twain device</C> </R>
<R> <C>ieaWIA</C> <C>acquire from WIA (scanners or camera)</C> </R>
</TABLE>
!!}
  TIEAcquireApi = (ieaTWain, ieaWIA);

{!!
<FS>TIEAcquireBitmapEvent

<FM>Declaration<FC>
TIEAcquireBitmapEvent = procedure(Sender: TObject; ABitmap: <A TIEBitmap>; var Handled: boolean) of object;

<FM>Description<FN>
ABitmap is a TIEBitmap object that contains the acquired image.
Setting Handled to True (default is False) causes ImageEn to ignore this image (do not insert it in the <A TImageEnMView> control).
!!}
  TIEAcquireBitmapEvent = procedure(Sender: TObject; ABitmap: TIEBitmap; var Handled: boolean) of object;

{!!
<FS>TIEJpegTransform

<FM>Declaration<FC>
TIEJpegTransform = (jtNone, jtCut, jtHorizFlip, jtVertFlip, jtTranspose, jtTransverse, jtRotate90, jtRotate180, jtRotate270);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>jtNone</C> <C>no transformation</C> </R>
<R> <C>jtCut</C> <C>cuts out part of the image</C> </R>
<R> <C>jtHorizFlip</C> <C>Mirror image horizontally (left-right).</C> </R>
<R> <C>jtVertFlip</C> <C>Mirror image vertically (top-bottom).</C> </R>
<R> <C>jtTranspose</C> <C>Transpose image (across UL-to-LR axis).</C> </R>
<R> <C>jtTransverse</C> <C>Transverse transpose (across UR-to-LL axis).</C> </R>
<R> <C>jtRotate90</C> <C>Rotate image 90 degrees clockwise.</C> </R>
<R> <C>jtRotate180</C> <C>Rotate image 180 degrees.</C> </R>
<R> <C>jtRotate270</C> <C>Rotate image 270 degrees clockwise (or 90 ccw).</C> </R>
</TABLE>
!!}
  TIEJpegTransform = (jtNone, jtCut, jtHorizFlip, jtVertFlip, jtTranspose, jtTransverse, jtRotate90, jtRotate180, jtRotate270);

{!!
<FS>TIEJpegCopyMarkers

<FM>Declaration<FC>
TIEJpegCopyMarkers = (jcCopyNone, jcCopyComments, jcCopyAll);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>jcCopyNone</C> <C>Copy no extra markers from source file. This setting suppresses all comments and other excess baggage present in the source file.</C> </R>
<R> <C>jcCopyComments</C> <C>Copy only comment markers. This setting copies comments from the source file, but discards any other inessential data.</C> </R>
<R> <C>jcCopyAll</C> <C>Copy all extra markers. This setting preserves miscellaneous markers found in the source file, such as JFIF thumbnails and Photoshop settings. In some files these extra markers can be sizable.</C> </R>
</TABLE>
!!}
  TIEJpegCopyMarkers = (jcCopyNone, jcCopyComments, jcCopyAll);

  // Header used to save a jpeg inside a Stream
  TStreamJpegHeader = record
    ID: array[0..4] of char; // ="JFIF\0"
    dim: integer; // length of jpeg box
  end;

  // Header used to save a PCX inside a Stream
  PCXSHead = record
    ID: array[0..4] of char; // 'PCX2\0'
    dim: integer;
  end;

  // Header used to save a TIFF inside a Stream
  TIFFSHead = record
    ID: array[0..4] of char; // 'TIFF\0'
    dim: integer;
  end;

{!!
<FS>TPreviewParams

<FM>Declaration<FC>
type TPreviewParams = set of (ppALL, ppAUTO, ppJPEG, ppTIFF, ppGIF, ppBMP, ppPCX, ppPNG, ppTGA, ppJ2000);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>ppALL</C> <C>shows all pages.</C> </R>
<R> <C>ppAUTO</C> <C>shows the page specified in Params.FileType property.</C> </R>
<R> <C>ppJPEG</C> <C>shows JPEG parameters.</C> </R>
<R> <C>ppTIFF</C> <C>shows TIFF paramaters.</C> </R>
<R> <C>ppGIF</C> <C>shows GIF, non-animated paramters.</C> </R>
<R> <C>ppBMP</C> <C>shows BMP parameters.</C> </R>
<R> <C>ppPCX</C> <C>shows PCX parameters.</C> </R>
<R> <C>ppPNG</C> <C>shows PNG parameters.</C> </R>
<R> <C>ppTGA</C> <C>shows TGA parameters.</C> </R>
<R> <C>ppJ2000</C> <C>shows JPEG2000 parameters.</C> </R>
</TABLE>
!!}
  TPreviewParams = set of (
    ppALL,
    ppAUTO,
    ppJPEG,
    ppTIFF,
    ppGIF,
    ppBMP,
    ppPCX,
    ppPNG,
    ppTGA
{$IFDEF IEINCLUDEJPEG2000}
    , ppJ2000
{$ENDIF}
    );

{!!
<FS>TGIFLZWCompFunc

<FM>Declaration<FC>
}
  TGIFLZWCompFunc = procedure(Stream: TStream; Height, Width: integer; Interlaced: boolean; FData: pchar; BitsPerPixel: integer);
{!!}

{!!
<FS>TGIFLZWDecompFunc

<FM>Declaration<FC>
}
  TGIFLZWDecompFunc = procedure(Stream: TStream; Height, Width: integer; Interlaced: boolean; FData: pchar);
{!!}

{!!
<FS>TTIFFLZWDecompFunc

<FM>Declaration<FC>
}
  TTIFFLZWDecompFunc = function(CompBuf: pbyte; LineSize: integer; var Id: integer): pbyte;
{!!}

{!!
<FS>TTIFFLZWCompFunc

<FM>Declaration<FC>
}
  TTIFFLZWCompFunc = procedure(indata: pbyte; inputlen: integer; outstream: TStream; var id: integer);
{!!}

  // previews properties

{!!
<FS>TIOPreviewsParamsItems

<FM>Declaration<FC>
TIOPreviewsParamsItems = (ioppDefaultLockPreview, ioppApplyButton);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>ioppDefaultLockPreview</C> <C>the "Lock preview" button will be down</C> </R>
<R> <C>ioppApplyButton</C> <C>the "Apply" button is shown</C> </R>
</TABLE>
!!}
  TIOPreviewsParamsItems = (ioppDefaultLockPreview, ioppApplyButton);

{!!
<FS>TIOPreviewsParams

<FM>Declaration<FC>
TIOPreviewsParams = set of <A TIOPreviewsParamsItems>;
!!}
  TIOPreviewsParams = set of TIOPreviewsParamsItems;

  // printing properties

{!!
<FS>TIEVerticalPos

<FM>Declaration<FC>
TIEVerticalPos = (ievpTOP, ievpCENTER, ievpBOTTOM);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>ievpTOP</C> <C>the image is top aligned</C> </R>
<R> <C>ievpCENTER</C> <C>the image is center aligned</C> </R>
<R> <C>ievpBOTTOM</C> <C>the image is bottom aligned</C> </R>
</TABLE>
!!}
  TIEVerticalPos = (ievpTOP, ievpCENTER, ievpBOTTOM);

{!!
<FS>TIEHorizontalPos

<FM>Declaration<FC>
TIEHorizontalPos = (iehpLEFT, iehpCENTER, iehpRIGHT);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>iehpLEFT</C> <C>the image is left aligned</C> </R>
<R> <C>iehpCENTER</C> <C>the image is center aligned</C> </R>
<R> <C>iehpRIGHT</C> <C>the image is right aligned</C> </R>
</TABLE>
!!}
  TIEHorizontalPos = (iehpLEFT, iehpCENTER, iehpRIGHT);

{!!
<FS>TIESize

<FM>Declaration<FC>
TIESize = (iesNORMAL, iesFITTOPAGE, iesFITTOPAGESTRETCH, iesSPECIFIEDSIZE);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>iesNORMAL</C> <C>the size is determined by original image DPI (used for real size copy)</C> </R>
<R> <C>iesFITTOPAGE</C> <C>stretch the image to fit the page respecting the proportions</C> </R>
<R> <C>iesFITTOPAGESTRETCH</C> <C>stretch the image to fit the page</C> </R>
<R> <C>iesSPECIFIEDSIZE</C> <C>specify absolute sizes with the SpecWidth and SpecHeight parameters</C> </R>
</TABLE>
!!}
  TIESize = (iesNORMAL, iesFITTOPAGE, iesFITTOPAGESTRETCH, iesSPECIFIEDSIZE);

{!!
<FS>TIOPSCompression

<FM>Declaration<FC>
  TIOPSCompression = (
    ioPS_RLE,
    ioPS_G4FAX,
    ioPS_G3FAX2D,
    ioPS_JPEG
    );

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>ioPS_RLE</C> <C>run length compression</C> </R>
<R> <C>ioPS_G4FAX</C> <C>G4Fax (only black/white images)</C> </R>
<R> <C>ioPS_G3FAX2D</C> <C>G3Fax (only black/white images)</C> </R>
<R> <C>ioPS_JPEG</C> <C>DCT-jpeg (only color images)</C> </R>
</TABLE>
!!}
  TIOPSCompression = (
    ioPS_RLE,
    ioPS_G4FAX,
    ioPS_G3FAX2D,
    ioPS_JPEG
    );

{!!
<FS>TIOPDFCompression

<FM>Declaration<FC>
  TIOPDFCompression = (
    ioPDF_UNCOMPRESSED,
    ioPDF_RLE,
    ioPDF_G4FAX,
    ioPDF_G3FAX2D,
    ioPDF_JPEG,
    ioPDF_LZW
    );

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>ioPDF_UNCOMPRESSED</C> <C>no compression</C> </R>
<R> <C>ioPDF_RLE</C> <C>run length compression</C> </R>
<R> <C>ioPDF_G4FAX</C> <C>G4Fax (only black/white images)</C> </R>
<R> <C>ioPDF_G3FAX2D</C> <C>G3Fax (only black/white images)</C> </R>
<R> <C>ioPDF_JPEG</C> <C>DCT-jpeg (only color images)</C> </R>
<R> <C>ioPDF_LZW</C> <C>LZW compression (for color and black/white images)</C> </R>
</TABLE>
!!}
  TIOPDFCompression = (
    ioPDF_UNCOMPRESSED,
    ioPDF_RLE,
    ioPDF_G4FAX,
    ioPDF_G3FAX2D,
    ioPDF_JPEG,
    ioPDF_LZW
    );

{!!
<FS>TIOTIFFCompression

<FM>Declaration<FC>
type TIOTIFFCompression = (ioTIFF_UNCOMPRESSED, ioTIFF_CCITT1D, ioTIFF_G3FAX1D, ioTIFF_G3FAX2D, ioTIFF_G4FAX, ioTIFF_LZW, ioTIFF_OLDJPEG, ioTIFF_JPEG, ioTIFF_PACKBITS, ioTIFF_ZIP, ioTIFF_DEFLATE, ioTIFF_UNKNOWN);

<FM>Description<FN>
<TABLE>
<R> <H>Value</H> <H>Description</H> </R>
<R> <C>ioTIFF_UNCOMPRESSED</C> <C>Uncompressed TIFF. Supports all pixel formats and alpha channel.</C> </R>
<R> <C>ioTIFF_CCITT1D</C> <C>Bilevel Huffman compression. Only black/white images, no alpha channel.</C> </R>
<R> <C>ioTIFF_G3FAX1D</C> <C>Bilevel Group 3 CCITT compression, monodimensional. Only black/white images, no alpha channel.</C> </R>
<R> <C>ioTIFF_G3FAX2D</C> <C>Bilevel Group 3 CCITT compression, bidimensional. Only black/white images, no alpha channel.</C> </R>
<R> <C>ioTIFF_G4FAX</C> <C>Bilevel Group 4 CCITT compression, bidimensional. Only black/white images, no alpha channel.</C> </R>
<R> <C>IoTIFF_LZW</C> <C>LZW compression. Supports alpha channel.</C> </R>
<R> <C>ioTIFF_OLDJPEG</C> <C>Ver.6.0 jpeg compression (unsupported). Only true color images, no alpha channel.</C> </R>
<R> <C>ioTIFF_JPEG</C> <C>Jpeg compression. Only true color images, no alpha channel.</C> </R>
<R> <C>ioTIFF_PACKBITS</C> <C>RLE compression. Supports alpha channel.</C> </R>
<R> <C>ioTIFF_ZIP</C> <C>ZIP compression (non TIFF standard). No alpha channel.</C> </R>
<R> <C>ioTIFF_DEFLATE</C> <C>Adobe ZIP compression (non TIFF standard). No alpha channel.</C> </R>
<R> <C>ioTIFF_UNKNOWN</C> <C>Unknown compression</C> </R>
</TABLE>
!!}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -