Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

JavaコードベースをImageIOからTRANSLATEERM1ENDへ移行する方法

既存のコードベースを JDeli に移行する

このガイドでは、既存のJavaコードベースを、ほとんど、あるいはまったく変更せずに JDeli を利用する方法を説明します。

移行の2つのアプローチ

JDeli では、既存のJava画像処理コードを移行するための2つの異なるアプローチを提供しています:

  1. ImageIOプラグインアプローチ - コード変更不要
  2. 直接APIアプローチ - 完全な制御と拡張API

アプローチ1:ImageIOプラグイン(ノンリファクタリングパス)

このアプローチにより、既存のコードに一切手を加えることなく、JDeli の性能と形式サポートをすぐに活用できます。

仕組み

ImageIOプラグインは、JDeli をImageIOのサービスプロバイダとして登録します。コードが ImageIO.read() または ImageIO.write() を呼び出すと、Javaは自動的にデフォルトのハンドラの代わりに JDeli の実装にそれらの呼び出しをルーティングします。

セットアップ手順

Mavenプロジェクトの場合:

<dependency>
    <groupId>com.idrsolutions</groupId>
    <artifactId>jdeli-imageio</artifactId>
    <version>3.0</version>
</dependency>

Gradleプロジェクトの場合:

dependencies {
    implementation 'com.idrsolutions:jdeli-imageio:3.0'
}

既存のコードは以前と全く同じように動作しますが、JDeli を使用するようになります。

// Your existing code - no changes needed!
BufferedImage image = ImageIO.read(new File("photo.heic"));
ImageIO.write(image, "jpeg", new File("output.jpg"));

オプション:追加フォーマットの登録

デフォルトでは、プラグインはAVIFとHEICのサポートを登録します。サポートされているすべてのフォーマットに JDeli を有効にする場合は、次の初期化コードを追加します:

import com.idrsolutions.image.imageio.ImageIOSupport;
import com.idrsolutions.image.utility.InputFormat;
import com.idrsolutions.image.utility.OutputFormat;

// Register all supported formats
ImageIOSupport.registerReaders(InputFormat.values());
ImageIOSupport.registerWriters(OutputFormat.values());
// Register a supported format
ImageIOSupport.registerReader(InputFormat.BMP)
ImageIOSupport.registerWriter(OutputFormat.BMP)

// Unregister a supported format
ImageIOSupport.unregisterReader(InputFormat.HEIC)
ImageIOSupport.unregisterWriter(OutputFormat.HEIC)

アプローチ2:直接API移行

最大の制御、パフォーマンス最適化、JDeli の高度な機能にアクセスしたい開発者向けに、直接 JDeli APIが利用可能です。

インストール

まず、プロジェクトに JDeli を追加します。このライブラリは、外部依存関係のない単一のJARファイルとして配布されています。

Maven(トライアルまたはライセンスの資格情報が必要):

<dependencies>
    <dependency>
        <groupId>com.idrsolutions</groupId>
        <artifactId>jdeli</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies>

Gradle:

dependencies {
    implementation 'com.idrsolutions:jdeli:1.0'
}

または、JARファイルを直接クラスパスに追加することもできます。

ImageIOから JDeli APIへの切り替え方法

切り替えは簡単です - JDeli のAPIはImageIOの簡潔さを反映しています:

変更前(ImageIO):

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

BufferedImage image = ImageIO.read(new File("input.jpg"));
ImageIO.write(image, "png", new File("output.png"));

変更後(JDeli):

import com.idrsolutions.image.JDeli;
import java.awt.image.BufferedImage;
import java.io.File;

BufferedImage image = JDeli.read(new File("input.jpg"));
JDeli.write(image, "png", new File("output.png"));

直接APIの高度な機能

直接APIにより、ImageIOでは利用できない強力な機能にアクセスできます:

1. タイプセーフな形式指定:

import com.idrsolutions.image.utility.OutputFormat;

BufferedImage image = JDeli.read(new File("photo.heic"));
JDeli.write(image, OutputFormat.PNG, new File("output.png"));

2. カスタムエンコーダオプション:

import com.idrsolutions.image.jpeg.options.JpegEncoderOptions;

BufferedImage image = JDeli.read(inputFile);

JpegEncoderOptions options = new JpegEncoderOptions();
options.setQuality(95);

JDeli.write(image, options, new File("high-quality.jpg"));

3. チェーン型画像処理:

import com.idrsolutions.image.processing.ImageProcessingOperations;

BufferedImage image = JDeli.read(inputFile);

ImageProcessingOperations operations = new ImageProcessingOperations()
    .scale(0.5)
    .rotate(90)
    .blur();

BufferedImage processed = operations.apply(image);
JDeli.write(processed, "jpeg", outputFile);

4. ワンステップ変換:

// Convert and process in a single operation
JDeli.convert(
    new File("input.tiff"),
    new File("output.webp"),
    new ImageProcessingOperations().scale(0.75)
);

プラグインと JDeli APIの比較

両方の移行パスで同じ高性能 JDeli コアライブラリを使用するため、どちらを選んでも同じ速度改善と形式サポートが得られます。以下は簡単な判断マトリックスです:

状況最適なアプローチ
大規模な既存コードベースImageIOプラグイン
数日ではなく数時間で移行したいImageIOプラグイン
コードレビューを最小限に抑えたいImageIOプラグイン
新規プロジェクトを開始直接API
カスタムエンコーダ設定が必要直接API
画像処理チェーンが必要直接API
最大限のパフォーマンス調整が必要直接API

よくある質問

Q: 段階的に移行できますか?
はい!両方のアプローチは並行して動作します。既存のコードにはプラグインを、新機能には直接APIを使い始めることができます。

Q: 既存のテストは引き続き合格しますか?
ほとんどの場合、そうです。JDeli は、改善を加えながらImageIOと互換性を保つように設計されています。

Q: 問題が発生した場合はどうすればよいですか?
JDeli のお客様は、開発者から直接サポートを受けられ、迅速な対応と、多くの場合数日以内の日次ビルドへの修正が行われます。

Q: 移行は元に戻せますか?
もちろんです。プラグインアプローチでは、依存関係を単に削除できます。直接APIでは、変更は最小限で、必要に応じて簡単に元に戻すことができます。