2014-11-18 1 views
1

우리는 델파이 XE6을 사용하여 크로스 플랫폼 FireMonkey 앱을 제작했으며 약간의 JPG 인코더를 조정하려고합니다. 실제로 하위 클래스로 만들고 JPEG 서명을 변경하고 파일에 매개 변수를 추가하고 파일 확장명을 변경하려고합니다. 실제 JPEG 엔진에서는 아무 것도 변경되지 않습니다.델파이에서의 사용자 정의 JPEG 이미지 처리

또한 실제 JPG 코드를 사용하는 LoadThumbnailFromFile을 지원하고자합니다.

그러나 우리는 JPG 인코더가 소스에서 선언 된 곳과 서브 클래 싱/파생 방법을 찾는 데 어려움을 겪고 있습니다.

+0

@bummi : 이것이 VCL에서 그래픽을 처리하는 방법입니다. FireMonkey가 그래픽을 처리하는 방식이 아닙니다. –

답변

6

FireMonkey에서 그래픽을 처리하는 방법은 VCL에서 그래픽을 처리하는 방법과 크게 다릅니다.

VCL에서 그래픽은 및 Vcl.Imaging.jpeg.TJPEGImage과 같은 Vcl.Graphics.TGraphic에서 파생 된 특수 클래스를 사용하여 처리됩니다. 특정 그래픽 유형을로드하거나 저장할 때 특정 클래스를 만듭니다.

FireMonkey에서 그래픽은 FMX.Graphics.TCustomBitmapCodec에서 파생 된 특수 클래스를 사용하여 FMX.Graphics.TBitmapCodecManager 클래스로 등록됩니다. 모든 그래픽을 처리 할 때는 범용 FMX.Graphics.TBitmap 클래스를 사용합니다. 그래픽을로드 할 때 적절한 코덱 (찾을 수있는 경우)을 사용하지만 저장할 때 사용할 코덱을 지정해야합니다.

FireMonkey는 각 플랫폼마다 다른 코덱 구현을 사용하므로 VCL에있는 것처럼 하위 클래스로 지정할 수있는 단일 클래스가 없습니다. 따라서 FireMonkey에서 JPEG 처리를 사용자 정의하려면 자신의 TCustomBitmapCodec - 유래 코덱을 만들고 (등록자는 .jpg.jpeg 파일 확장명의 기존 클래스 등록 취소)으로 등록해야합니다.

  1. 윈도우 : TBitmapCodecWIC
  2. OSX FMX.Canvas.D2D.pas에서 : TBitmapCodecQuartz
  3. 아이폰 OS FMX.Canvas.Mac.pas에서 : TBitmapCodecQuartz
  4. 안드로이드 FMX.Canvas.iOS.pas에서 : TBitmapCodecAndroid
FMX.Canvas.Android.pas에서 다음 FireMonkey는 현재 구현 코덱 클래스는

사용 중 {$IFDEF} stateme nts를 사용하면 필요에 따라 사용자 정의 코덱의 기존 클래스를 활용할 수 있습니다.