LEADTOOLS画像ファイルサポート(Leadtools.Codecsアセンブリ)

フレームを表示

CodecsJpeg2000Optionsクラス








メンバ 
JPEG 2000とLEAD CMWイメージのロードと保存についての追加のオプションを提供します。
オブジェクトモデル
構文
public class CodecsJpeg2000Options 
'Declaration
 
Public Class CodecsJpeg2000Options 
'Usage
 
Dim instance As CodecsJpeg2000Options
public sealed class CodecsJpeg2000Options 
@interface LTCodecsJpeg2000Options : NSObject
public class CodecsJpeg2000Options
function Leadtools.Codecs.CodecsJpeg2000Options()
public ref class CodecsJpeg2000Options 
解説

JPEG2000画像フォーマットは、優れた圧縮パフォーマンスと強いファイル処理を提供します。他が主に結果として生じるファイルサイズに影響を及ぼす間、若干のJ2Kオプションは圧縮パフォーマンスに直接的な影響を及ぼすことができます。高度なオプションの上のメモは、下記を続行します。

主なオプション(上記の)は、以下を含みます:

LEADによるこの構造体を用いて、CMW(Cmw)またはLEADウェーブレットCMW圧縮(TifCmw)によるTIFFは、ファイルします

CmwまたはTifCmwファイルでこの構造体を使うとき、以下のデータプロパティだけは必要とされます:

CompressionControl

CompressionRatio

TargetFileSize

ProgressingOrder

結果として生じるファイルサイズ/圧縮比は、いくつかの点で決定されることができます。CompressionControlプロパティで設定される値に従い、ユーザーは圧縮の間、ターゲットファイル、圧縮の間の使用への実際の圧縮比またはQファクターのサイズを使用に設定することができます。CompressionControlプロパティがRatioに設定されるならば、使われる圧縮はCompressionRatioプロパティで圧縮比に基づきます。CompressionControlプロパティがTargetSizeに設定されるならば、使われる圧縮はTargetFileSizeプロパティで目的のターゲットファイルサイズに基づきます。CompressionControlプロパティがQualityFactorに設定されるならば、使われる圧縮は保存関数に渡されるQualityFactorに基づきます。

ロスレス圧縮

ロスレス圧縮のために、CompressionControlプロパティをロスレスに設定します。

不可逆圧縮量子化

2種類の量子化が、ロッシー圧縮のためにあります:スカラーDerived Quantizationとスカラーは、量子化を説明しました。

主唱者/仮数組は、サブバンド(Expounded Quantization)ごとにcodestreamで合図されるか、ローパスサブバンドのためにだけ他に合図されて、他の全てのサブバンド(Derived Quantization)のために由来されました。Derived Quantizationの場合、すべての主唱者/仮数組は、ローパスサブバンドと一致している単一の主唱者/仮数一組に由来します。

サブバンドのための量子化ステップ幅は以下の方程式を用いてサブバンドのダイナミックレンジから計算されます、そこで、R = bppがサブバンドのためです:

Quantization Step = (2 (R - Exponent) ) * [1 + (Mantissa / 2048)]

CompressionControlプロパティの値がRatio(QualityFactorまたはTargetSize)である、そして、AlphaChannelLosslessなプロパティの値がtrueであるならば、ロスレスアルファコンポーネントに加えて、圧縮したJ2K/JP2ファイルは3つのロッシーコンポーネント(赤くて、緑で青)を備えています。

CompressionControlプロパティの値がロスレスであるならば、AlphaChannelLosslessの値は無視されます、そして、すべてのコンポーネントはロスレスでしょう。

アルファチャンネルは外部的にColorResolutionCommandDynamicBinaryCommandを用いてディザ処理でありえます、そして、J2K/JP2ファイルを保存する前に、場合において、より良好アルファチャネル品質は目的です。

タイルとキャンバス設定

ImageAreaHorizontalOffsetImageAreaVerticalOffsetReferenceTileHeightReferenceTileWidthTileHorizontalOffsetTileVerticalOffsetプロパティの値は、imageの中でタイルを作成するのに用いられます。任意のタイルサイズは許可します。境界タイルを除いて、すべてのタイルは、同じサイズです。各々のタイルは、個々に圧縮されることができます。これは、プログラムが実行する間メモリー使用状況を減少させることができるが、タイルのエッジで、アーチファクトを生成することもできます。タイルのサイズが減少して、アーチファクトは一般に増加します。デフォルトで、image全体を格納する1枚のタイルが、あります。

グリッドが正方格子である参照は、インデックスで指します(0、0)、(Xsiz-1、Ysiz-1)。「イメージエリア」は、次元のパラメータ(Xsiz、Ysiz)と(XOsiz、YOsiz)によって、リファレンス格子の上で定義されます。リファレンス格子を定義しているいろいろなパラメータは、下記の図で表示されます。

具体的には、リファレンス格子のイメージエリアは、場所(XOsiz、YOsiz)のその上の左手の参照グリッド点と場所(Xsiz-1、Ysiz-1)のそのLR手参照グリッド点で定義されます。

プロパティ名 図の中のラベル
ImageAreaHorizontalOffset XOsiz
ImageAreaVerticalOffset YOsiz
ReferenceTileHeight XTsiz
ReferenceTileWidth YTsiz
TileHorizontalOffset XTOsiz
TileVerticalOffset YTOsiz

プログレッション順序

任意のタイル-一部のために、パケットは特定のレイヤ、特定のコンポーネント、特定の解像度レベルと特定のプレシンクトからすべての圧縮画像データを格納します。これらのパケットがcodestreamで見つけられる命令は、数列順序と呼ばれています。数列順序を設定するために、ProgressingOrderプロパティを使います。ProgressingOrderプロパティは、パケットの順位付けがそうすることができる数列が4本の軸に沿って進歩することを示しているために、CodecsJpeg2000ProgressionsOrder列挙体を使います:レイヤ、コンポーネント、解像度とposition。以下の進行は指定されることができます:

  1. LayerResolutionComponentPosition。低いサンプル精度が最も望ましいとき、この型の数列は役に立つかもしれません、しかし、情報はすべてのコンポーネントのために必要とされます。

  2. ResolutionLayerComponentPosition。この型の数列は、すべてのimageコンポーネントの低解像度のレベルバージョンを提供することに役立つかもしれません。

  3. ResolutionPositionComponentLayer。この型の数列は、特定の空間場所ですべてのimageコンポーネントの低解像度のレベルバージョンを提供することに役立つかもしれません。

  4. PositionComponentResolutionLayer。この型の数列は、すべてのコンポーネントで高いサンプル精度を特定の空間場所に提供することに役立つかもしれません。

  5. ComponentPositionResolutionLayer。この型の数列は、特定のimageコンポーネントで高精度を特定の空間場所に提供することに役立つかもしれません。

詳細は、以下を参照してください。

ISO/IEC JTC1/SC29/WG1 N1861:静止画像のコーディング

サンプル
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs

      
Public Sub CodecsJpeg2000OptionsExample()
   Dim codecs As RasterCodecs = New RasterCodecs()
   Dim srcFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k")

   'Setting the Jpeg2000 load options.
   codecs.Options.Jpeg2000.Load.J2kResolution = New LeadSize(800, 800)
   codecs.Options.Jpeg2000.Load.Jp2Resolution = New LeadSize(800, 800)

   'loading a Jpeg2000 image.
   Dim srcImage As RasterImage = codecs.Load(srcFileName)

   'Setting the Jpeg2000 save options 
   codecs.Options.Jpeg2000.Save.CompressionControl = CodecsJpeg2000CompressionControl.Ratio
   codecs.Options.Jpeg2000.Save.CompressionRatio = 15.0F
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 5
   codecs.Options.Jpeg2000.Save.DerivedQuantization = True
   codecs.Options.Jpeg2000.Save.ImageAreaHorizontalOffset = 0
   codecs.Options.Jpeg2000.Save.ImageAreaVerticalOffset = 0
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.PositionComponentResolutionLayer
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 240
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 480
   codecs.Options.Jpeg2000.Save.RegionOfInterest = CodecsJpeg2000RegionOfInterest.UseLeadRegion
   codecs.Options.Jpeg2000.Save.RegionOfInterestRectangle = New LeadRect(0, 0, 0, 0)
   codecs.Options.Jpeg2000.Save.TargetFileSize = 10240
   codecs.Options.Jpeg2000.Save.TileHorizontalOffset = 0
   codecs.Options.Jpeg2000.Save.TileVerticalOffset = 0
   codecs.Options.Jpeg2000.Save.UseColorTransform = True
   codecs.Options.Jpeg2000.Save.UseEphMarker = False
   codecs.Options.Jpeg2000.Save.UseRegionOfInterest = False
   codecs.Options.Jpeg2000.Save.UseSopMarker = False

   'Save the first sample.
   codecs.Save(srcImage, Path.Combine(LEAD_VARS.ImagesDir, "Image1_test.j2k"), RasterImageFormat.J2k, srcImage.BitsPerPixel)

   'changing some of the Jpeg2000 save options
   codecs.Options.Jpeg2000.Save.CompressionRatio = 23.0F
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 6
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 320
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 320
   codecs.Options.Jpeg2000.Save.UseEphMarker = True
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.ResolutionPositionComponentLayer
   codecs.Options.Jpeg2000.Save.UseSopMarker = True
   codecs.Options.Jpeg2000.Save.TargetFileSize = 102400

   'Save the first sample.
   codecs.Save(srcImage, Path.Combine(LEAD_VARS.ImagesDir, "Image1_test.jp2"), RasterImageFormat.J2k, srcImage.BitsPerPixel)

   ' Clean up
   srcImage.Dispose()
   codecs.Dispose()
End Sub

Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools;
using Leadtools.Codecs;

      
public void CodecsJpeg2000OptionsExample()
{
   RasterCodecs codecs = new RasterCodecs();
   string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k");

   //Setting the Jpeg2000 load options.
   codecs.Options.Jpeg2000.Load.J2kResolution = new LeadSize(800, 800);
   codecs.Options.Jpeg2000.Load.Jp2Resolution = new LeadSize(800, 800);

   //loading a Jpeg2000 image.
   RasterImage srcImage = codecs.Load(srcFileName);

   //Setting the Jpeg2000 save options 
   codecs.Options.Jpeg2000.Save.CompressionControl = CodecsJpeg2000CompressionControl.Ratio;
   codecs.Options.Jpeg2000.Save.CompressionRatio = 15.0f;
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 5;
   codecs.Options.Jpeg2000.Save.DerivedQuantization = true;
   codecs.Options.Jpeg2000.Save.ImageAreaHorizontalOffset = 0;
   codecs.Options.Jpeg2000.Save.ImageAreaVerticalOffset = 0;
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.PositionComponentResolutionLayer;
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 240;
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 480;
   codecs.Options.Jpeg2000.Save.RegionOfInterest = CodecsJpeg2000RegionOfInterest.UseLeadRegion;
   codecs.Options.Jpeg2000.Save.RegionOfInterestRectangle = new LeadRect(0, 0, 0, 0);
   codecs.Options.Jpeg2000.Save.TargetFileSize = 10240;
   codecs.Options.Jpeg2000.Save.TileHorizontalOffset = 0;
   codecs.Options.Jpeg2000.Save.TileVerticalOffset = 0;
   codecs.Options.Jpeg2000.Save.UseColorTransform = true;
   codecs.Options.Jpeg2000.Save.UseEphMarker = false;
   codecs.Options.Jpeg2000.Save.UseRegionOfInterest = false;
   codecs.Options.Jpeg2000.Save.UseSopMarker = false;

   //Save the first sample.
   codecs.Save(srcImage, Path.Combine(LEAD_VARS.ImagesDir, "Image1_test.j2k"), RasterImageFormat.J2k, srcImage.BitsPerPixel);

   //changing some of the Jpeg2000 save options
   codecs.Options.Jpeg2000.Save.CompressionRatio = 23.0f;
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 6;
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 320;
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 320;
   codecs.Options.Jpeg2000.Save.UseEphMarker = true;
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.ResolutionPositionComponentLayer;
   codecs.Options.Jpeg2000.Save.UseSopMarker = true;
   codecs.Options.Jpeg2000.Save.TargetFileSize = 102400;

   //Save the first sample.
   codecs.Save(srcImage, Path.Combine(LEAD_VARS.ImagesDir, "Image1_test.jp2"), RasterImageFormat.J2k, srcImage.BitsPerPixel);

   // Clean up
   srcImage.Dispose();
   codecs.Dispose();
}

static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
CodecsOptionsExamples.prototype.CodecsJpeg2000OptionsExample = function ( ) 
{
   Tools.SetLicense ( ) ;
   with (Leadtools) {
      with (Leadtools.Codecs) {

         var codecs = new RasterCodecs();
         var image;
         //Setting the Jpeg2000 load options.
         codecs.options.jpeg2000.load.j2kResolution = LeadSizeHelper.create(800, 800);
         codecs.options.jpeg2000.load.jp2Resolution = LeadSizeHelper.create(800, 800);

         //loading a Jpeg2000 image.
         var srcFileName = "Assets\\Image1.j2k";
         return Tools.AppInstallFolder().getFileAsync(srcFileName).then(function (loadFile) {
            return codecs.loadAsync(LeadStreamFactory.create(loadFile))
         })
         .then(function (img) {
            image = img;

            //Setting the Jpeg2000 save options 
            codecs.options.jpeg2000.save.codeBlockHeight = 32;
            codecs.options.jpeg2000.save.codeBlockWidth = 32;
            codecs.options.jpeg2000.save.compressionControl = CodecsJpeg2000CompressionControl.ratio;
            codecs.options.jpeg2000.save.compressionRatio = 15.0;
            codecs.options.jpeg2000.save.decompositionLevels = 5;
            codecs.options.jpeg2000.save.derivedBaseExponent = 8;
            codecs.options.jpeg2000.save.derivedBaseMantissa = 2;
            codecs.options.jpeg2000.save.derivedQuantization = true;
            codecs.options.jpeg2000.save.errorResilienceSymbol = false;
            codecs.options.jpeg2000.save.guardBits = 4;
            codecs.options.jpeg2000.save.imageAreaHorizontalOffset = 0;
            codecs.options.jpeg2000.save.imageAreaVerticalOffset = 0;
            codecs.options.jpeg2000.save.predictableTermination = false;
            codecs.options.jpeg2000.save.progressingOrder = CodecsJpeg2000ProgressionsOrder.positionComponentResolutionLayer;
            codecs.options.jpeg2000.save.referenceTileHeight = 240;
            codecs.options.jpeg2000.save.referenceTileWidth = 480;
            codecs.options.jpeg2000.save.regionOfInterest = CodecsJpeg2000RegionOfInterest.useLeadRegion;
            codecs.options.jpeg2000.save.regionOfInterestRectangle = LeadRectHelper.create(0, 0, 0, 0);
            codecs.options.jpeg2000.save.resetContextOnBoundaries = false;
            codecs.options.jpeg2000.save.selectiveAcBypass = false;
            codecs.options.jpeg2000.save.targetFileSize = 10240;
            codecs.options.jpeg2000.save.terminationOnEachPass = false;
            codecs.options.jpeg2000.save.tileHorizontalOffset = 0;
            codecs.options.jpeg2000.save.tileVerticalOffset = 0;
            codecs.options.jpeg2000.save.useColorTransform = true;
            codecs.options.jpeg2000.save.useEphMarker = false;
            codecs.options.jpeg2000.save.useRegionOfInterest = false;
            codecs.options.jpeg2000.save.useSopMarker = false;
            codecs.options.jpeg2000.save.verticallyCausalContext = false;

            //Save the first sample.
            var destFileName = "Image1_test.j2k";
            return Tools.AppLocalFolder().createFileAsync(destFileName)
         }).then(function (saveFile) {
            return codecs.saveAsync(image, LeadStreamFactory.create(saveFile), RasterImageFormat.j2k, image.bitsPerPixel)
         })
         .then(function () {

            //changing some of the Jpeg2000 save options
            codecs.options.jpeg2000.save.codeBlockHeight = 4;
            codecs.options.jpeg2000.save.codeBlockWidth = 8;
            codecs.options.jpeg2000.save.compressionRatio = 23.0;
            codecs.options.jpeg2000.save.decompositionLevels = 6;
            codecs.options.jpeg2000.save.derivedBaseMantissa = 2;
            codecs.options.jpeg2000.save.referenceTileHeight = 320;
            codecs.options.jpeg2000.save.referenceTileWidth = 320;
            codecs.options.jpeg2000.save.useEphMarker = true;
            codecs.options.jpeg2000.save.progressingOrder = CodecsJpeg2000ProgressionsOrder.resolutionPositionComponentLayer;
            codecs.options.jpeg2000.save.useSopMarker = true;
            codecs.options.jpeg2000.save.targetFileSize = 102400;

            //Save the first sample.
            var destFileName = "Image1_test.jp2";
            return Tools.AppLocalFolder().createFileAsync(destFileName)
         })
         .then(function (saveFile) {
            return codecs.saveAsync(image, LeadStreamFactory.create(saveFile), RasterImageFormat.j2k, image.bitsPerPixel)
         })
         .then(function () {

            // Clean up
            image.close();
            codecs.close();
         });
      }
   }
}
using Leadtools;
using Leadtools.Codecs;

      
public async Task CodecsJpeg2000OptionsExample()
{
   RasterCodecs codecs = new RasterCodecs();
   //Setting the Jpeg2000 load options.
   codecs.Options.Jpeg2000.Load.J2kResolution = LeadSizeHelper.Create(800, 800);
   codecs.Options.Jpeg2000.Load.Jp2Resolution = LeadSizeHelper.Create(800, 800);

   //loading a Jpeg2000 image.
   string srcFileName = @"Assets\Image1.j2k";
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName);
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile));

   //Setting the Jpeg2000 save options 
   codecs.Options.Jpeg2000.Save.CodeBlockHeight = 32;
   codecs.Options.Jpeg2000.Save.CodeBlockWidth = 32;
   codecs.Options.Jpeg2000.Save.CompressionControl = CodecsJpeg2000CompressionControl.Ratio;
   codecs.Options.Jpeg2000.Save.CompressionRatio = 15.0f;
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 5;
   codecs.Options.Jpeg2000.Save.DerivedBaseExponent = 8;
   codecs.Options.Jpeg2000.Save.DerivedBaseMantissa = 2;
   codecs.Options.Jpeg2000.Save.DerivedQuantization = true;
   codecs.Options.Jpeg2000.Save.ErrorResilienceSymbol = false;
   codecs.Options.Jpeg2000.Save.GuardBits = 4;
   codecs.Options.Jpeg2000.Save.ImageAreaHorizontalOffset = 0;
   codecs.Options.Jpeg2000.Save.ImageAreaVerticalOffset = 0;
   codecs.Options.Jpeg2000.Save.PredictableTermination = false;
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.PositionComponentResolutionLayer;
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 240;
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 480;
   codecs.Options.Jpeg2000.Save.RegionOfInterest = CodecsJpeg2000RegionOfInterest.UseLeadRegion;
   codecs.Options.Jpeg2000.Save.RegionOfInterestRectangle = LeadRectHelper.Create(0, 0, 0, 0);
   codecs.Options.Jpeg2000.Save.ResetContextOnBoundaries = false;
   codecs.Options.Jpeg2000.Save.SelectiveAcBypass = false;
   codecs.Options.Jpeg2000.Save.TargetFileSize = 10240;
   codecs.Options.Jpeg2000.Save.TerminationOnEachPass = false;
   codecs.Options.Jpeg2000.Save.TileHorizontalOffset = 0;
   codecs.Options.Jpeg2000.Save.TileVerticalOffset = 0;
   codecs.Options.Jpeg2000.Save.UseColorTransform = true;
   codecs.Options.Jpeg2000.Save.UseEphMarker = false;
   codecs.Options.Jpeg2000.Save.UseRegionOfInterest = false;
   codecs.Options.Jpeg2000.Save.UseSopMarker = false;
   codecs.Options.Jpeg2000.Save.VerticallyCausalContext = false;

   //Save the first sample.
   string destFileName = @"Image1_test.j2k";
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName);
   await codecs.SaveAsync(image, LeadStreamFactory.Create(saveFile), RasterImageFormat.J2k, image.BitsPerPixel);

   //changing some of the Jpeg2000 save options
   codecs.Options.Jpeg2000.Save.CodeBlockHeight = 4;
   codecs.Options.Jpeg2000.Save.CodeBlockWidth = 8;
   codecs.Options.Jpeg2000.Save.CompressionRatio = 23.0f;
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 6;
   codecs.Options.Jpeg2000.Save.DerivedBaseMantissa = 2;
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 320;
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 320;
   codecs.Options.Jpeg2000.Save.UseEphMarker = true;
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.ResolutionPositionComponentLayer;
   codecs.Options.Jpeg2000.Save.UseSopMarker = true;
   codecs.Options.Jpeg2000.Save.TargetFileSize = 102400;

   //Save the first sample.
   destFileName = @"Image1_test.jp2";
   saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName);
   await codecs.SaveAsync(image, LeadStreamFactory.Create(saveFile), RasterImageFormat.J2k, image.BitsPerPixel);

   // Clean up
   image.Dispose();
   codecs.Dispose();
}
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Examples;
using Leadtools.ImageProcessing;

public void CodecsJpeg2000OptionsExample(Stream inStream, Stream outStreamJ2k, Stream outStreamJp2)
{
   RasterCodecs codecs = new RasterCodecs();
   //Setting the Jpeg2000 load options.
   codecs.Options.Jpeg2000.Load.J2kResolution = new LeadSize(800, 800);
   codecs.Options.Jpeg2000.Load.Jp2Resolution = new LeadSize(800, 800);

   //loading a Jpeg2000 image.
   RasterImage srcImage = codecs.Load(inStream);

   //Setting the Jpeg2000 save options 
   codecs.Options.Jpeg2000.Save.CodeBlockHeight = 32;
   codecs.Options.Jpeg2000.Save.CodeBlockWidth = 32;
   codecs.Options.Jpeg2000.Save.CompressionControl = CodecsJpeg2000CompressionControl.Ratio;
   codecs.Options.Jpeg2000.Save.CompressionRatio = 15.0f;
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 5;
   codecs.Options.Jpeg2000.Save.DerivedBaseExponent = 8;
   codecs.Options.Jpeg2000.Save.DerivedBaseMantissa = 2;
   codecs.Options.Jpeg2000.Save.DerivedQuantization = true;
   codecs.Options.Jpeg2000.Save.ErrorResilienceSymbol = false;
   codecs.Options.Jpeg2000.Save.GuardBits = 4;
   codecs.Options.Jpeg2000.Save.ImageAreaHorizontalOffset = 0;
   codecs.Options.Jpeg2000.Save.ImageAreaVerticalOffset = 0;
   codecs.Options.Jpeg2000.Save.PredictableTermination = false;
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.PositionComponentResolutionLayer;
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 240;
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 480;
   codecs.Options.Jpeg2000.Save.RegionOfInterest = CodecsJpeg2000RegionOfInterest.UseLeadRegion;
   codecs.Options.Jpeg2000.Save.RegionOfInterestRectangle = new LeadRect(0, 0, 0, 0);
   codecs.Options.Jpeg2000.Save.ResetContextOnBoundaries = false;
   codecs.Options.Jpeg2000.Save.SelectiveAcBypass = false;
   codecs.Options.Jpeg2000.Save.TargetFileSize = 10240;
   codecs.Options.Jpeg2000.Save.TerminationOnEachPass = false;
   codecs.Options.Jpeg2000.Save.TileHorizontalOffset = 0;
   codecs.Options.Jpeg2000.Save.TileVerticalOffset = 0;
   codecs.Options.Jpeg2000.Save.UseColorTransform = true;
   codecs.Options.Jpeg2000.Save.UseEphMarker = false;
   codecs.Options.Jpeg2000.Save.UseRegionOfInterest = false;
   codecs.Options.Jpeg2000.Save.UseSopMarker = false;
   codecs.Options.Jpeg2000.Save.VerticallyCausalContext = false;

   //Save the first sample.
   codecs.Save(srcImage, outStreamJ2k, RasterImageFormat.J2k, srcImage.BitsPerPixel);

   //changing some of the Jpeg2000 save options
   codecs.Options.Jpeg2000.Save.CodeBlockHeight = 4;
   codecs.Options.Jpeg2000.Save.CodeBlockWidth = 8;
   codecs.Options.Jpeg2000.Save.CompressionRatio = 23.0f;
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 6;
   codecs.Options.Jpeg2000.Save.DerivedBaseMantissa = 2;
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 320;
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 320;
   codecs.Options.Jpeg2000.Save.UseEphMarker = true;
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.ResolutionPositionComponentLayer;
   codecs.Options.Jpeg2000.Save.UseSopMarker = true;
   codecs.Options.Jpeg2000.Save.TargetFileSize = 102400;

   //Save the second sample.
   codecs.Save(srcImage, outStreamJp2, RasterImageFormat.J2k, srcImage.BitsPerPixel);

   // Clean up
   srcImage.Dispose();
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing

Public Sub CodecsJpeg2000OptionsExample(ByVal inStream As Stream, ByVal outStreamJ2k As Stream, ByVal outStreamJp2 As Stream)
   Dim codecs As RasterCodecs = New RasterCodecs()
   'Setting the Jpeg2000 load options.
   codecs.Options.Jpeg2000.Load.J2kResolution = New LeadSize(800, 800)
   codecs.Options.Jpeg2000.Load.Jp2Resolution = New LeadSize(800, 800)

   'loading a Jpeg2000 image.
   Dim srcImage As RasterImage = codecs.Load(inStream)

   'Setting the Jpeg2000 save options 
   codecs.Options.Jpeg2000.Save.CodeBlockHeight = 32
   codecs.Options.Jpeg2000.Save.CodeBlockWidth = 32
   codecs.Options.Jpeg2000.Save.CompressionControl = CodecsJpeg2000CompressionControl.Ratio
   codecs.Options.Jpeg2000.Save.CompressionRatio = 15.0f
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 5
   codecs.Options.Jpeg2000.Save.DerivedBaseExponent = 8
   codecs.Options.Jpeg2000.Save.DerivedBaseMantissa = 2
   codecs.Options.Jpeg2000.Save.DerivedQuantization = True
   codecs.Options.Jpeg2000.Save.ErrorResilienceSymbol = False
   codecs.Options.Jpeg2000.Save.GuardBits = 4
   codecs.Options.Jpeg2000.Save.ImageAreaHorizontalOffset = 0
   codecs.Options.Jpeg2000.Save.ImageAreaVerticalOffset = 0
   codecs.Options.Jpeg2000.Save.PredictableTermination = False
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.PositionComponentResolutionLayer
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 240
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 480
   codecs.Options.Jpeg2000.Save.RegionOfInterest = CodecsJpeg2000RegionOfInterest.UseLeadRegion
   codecs.Options.Jpeg2000.Save.RegionOfInterestRectangle = New LeadRect(0, 0, 0, 0)
   codecs.Options.Jpeg2000.Save.ResetContextOnBoundaries = False
   codecs.Options.Jpeg2000.Save.SelectiveAcBypass = False
   codecs.Options.Jpeg2000.Save.TargetFileSize = 10240
   codecs.Options.Jpeg2000.Save.TerminationOnEachPass = False
   codecs.Options.Jpeg2000.Save.TileHorizontalOffset = 0
   codecs.Options.Jpeg2000.Save.TileVerticalOffset = 0
   codecs.Options.Jpeg2000.Save.UseColorTransform = True
   codecs.Options.Jpeg2000.Save.UseEphMarker = False
   codecs.Options.Jpeg2000.Save.UseRegionOfInterest = False
   codecs.Options.Jpeg2000.Save.UseSopMarker = False
   codecs.Options.Jpeg2000.Save.VerticallyCausalContext = False

   'Save the first sample.
   codecs.Save(srcImage, outStreamJ2k, RasterImageFormat.J2k, srcImage.BitsPerPixel)

   'changing some of the Jpeg2000 save options
   codecs.Options.Jpeg2000.Save.CodeBlockHeight = 4
   codecs.Options.Jpeg2000.Save.CodeBlockWidth = 8
   codecs.Options.Jpeg2000.Save.CompressionRatio = 23.0f
   codecs.Options.Jpeg2000.Save.DecompositionLevels = 6
   codecs.Options.Jpeg2000.Save.DerivedBaseMantissa = 2
   codecs.Options.Jpeg2000.Save.ReferenceTileHeight = 320
   codecs.Options.Jpeg2000.Save.ReferenceTileWidth = 320
   codecs.Options.Jpeg2000.Save.UseEphMarker = True
   codecs.Options.Jpeg2000.Save.ProgressingOrder = CodecsJpeg2000ProgressionsOrder.ResolutionPositionComponentLayer
   codecs.Options.Jpeg2000.Save.UseSopMarker = True
   codecs.Options.Jpeg2000.Save.TargetFileSize = 102400

   'Save the second sample.
   codecs.Save(srcImage, outStreamJp2, RasterImageFormat.J2k, srcImage.BitsPerPixel)

   ' Clean up
   srcImage.Dispose()
End Sub
必要条件

ターゲットプラットホーム

参照

参照

CodecsJpeg2000Optionsメンバ
Leadtools.Codecs名前空間
JPEG 2000機能によるプログラミング