2014年2月16日日曜日

Windows 8.1 64bit JMagick インストール

pleiades の java には include が無いので jdk インストール
エクスプローラでダウンロードした jdk-7u51-windows-x64.exe ファイルを選択、インストール。
C:\Program Files\Java\jdk1.7.0_51\include を C:\Pleiades\java\7\include へコピー。

JMagick の取得
  • 「ウィンドウ」「パースペクティブを開く」「その他」「SVN リポジトリ・エクスプローラー」
  • 「SVN リポジトリー」ウィンドウで右クリック「新規」「リポジトリーロケーション」
  • 「URL:」に https://svn.code.sf.net/p/jmagick/code/ を指定
  • branches の最新バージョンを右クリックして「チェックアウト」

Makefile の編集
  • c:\Pleiades\workspace\6.6.9\win32\Makefile.all を c:\Pleiades\workspace\6.6.9\src にコピー
  • c:\Pleiades\workspace\6.6.9\src\Makefile.all を編集

include および 64bit Lib 指定 
CPPINC=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include
CPPLIB=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64

JDK ディレクトリ指定
JDKDIR=C:\Pleiades\java\7

ImageMagick ディレクトリ指定
MAGICKDIR=C:\Program Files\ImageMagick-6.8.8-Q16

コンパイラフラグ
CPP_FLAGS= \
    /nologo /MT /w /EHsc /Od /Gs0 /Fo"$(INTDIR)\\" /c /favor:AMD64 \
    /D "WIN64" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" \
    /D "JMAGICK_EXPORTS"  /D "_VISUALC_" /I "$(CPPINC)" \
    /I "$(JNIINC)" /I "$(JNIINC)/win32" /I "$(MAGICKINC)" \
    /I "$(GENDIR)" /I "$(SRCDIR)" /I "$(MAGICKINCDIR)"
リンクフラグ
LINK32_FLAGS= \
    "$(MAGICKLIB)" \
    /nologo /dll /incremental:no /machine:x64 \
    /libpath:"$(CPPLIB)" \
    /out:"$(OUTDIR)\jmagick.dll" \
    /implib:"$(OUTDIR)\jmagick.lib" \
    /NODEFAULTLIB:msvcrt.lib \
    /MANIFEST
Java コンパイラオプション
CLASSES :    $(SRCDIR)\*.java $(SRCDIR)\util\*.java
    "$(JDKBIN)\javac" -source 1.5 -target 1.5 -d $(CLSDIR) -classpath $(SRCDIR) -sourcepath $(SRCDIR) $(?)

コマンドプロンプト(管理者)を実行
cd "\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64"
vcvarsx86_amd64.bat
cd \pleiades\workspace\6.6.9\src
mkdir ..\classes
nmake -f Makefile.all
link 時に未解決の外部シンボルエラーが発生する。
を参照し、「Deprecated, replace with:」で書かれたメソッドへ変更する。
  • AcquireMemory は AcquireMagickMemory に変更した。
  • JMagick のメソッド自体が deprecate な場合は丸ごとコメント化。

make 処理中で
  • jmagick.jar を C:\Pleiades\java\7\lib\ext
  • jmagick.dll を C:\Program Files\ImageMagick-6.8.8-Q16
にコピーする。

jmagick.jar アクセス制限解除
  • 「プロジェクトのプロパティ」「Java のビルド・パス」「ライブラリー」「アクセス・ルール」「編集」「追加」
  • 「レゾリューション」を「アクセス可能」
  • 「ルール・パターン」を「magick/*」

Javaサンプルコード(画像リサイズ)を実行して動作確認
try{
  MagickImage mi = new MagickImage(new ImageInfo("c:\\Temp\\sample.jpg"));
    MagickImage mo = mi.scaleImage(300,300);
mo.setFileName("c:\\Temp\\out.jpg");
mo.writeImage(new ImageInfo());
} catch (Exception ex) {
ex.printStackTrace();
}


人気ブログランキングへ