喫茶XRAYトップページ

[スレッド全体
]

[11393] ImageMagick返信 削除
2017/9/27 (水) 20:07:53 Mr.XRAY
以下の記事を追加しました.

[ImageMagick を使用した画像ファイル形式の変換]
http://mrxray.on.coocan.jp/Delphi/Others/ImageMagick.htm


[11394] Re:ImageMagick返信 削除
2017/9/27 (水) 22:38:28 Mr.XRAY
> [ImageMagick を使用した画像ファイル形式の変換]
> http://mrxray.on.coocan.jp/Delphi/Others/ImageMagick.htm


以前,と言っても 2009年ですか,その時にテストした時は
Visual C++ ランタイムパッケージがインストールされていない
環境ではエラーとなりました.
先ほど,アプリを全くインストールしていない Windows XP(SP3)
で EXE を実行したところ,一番最後のサンプル,
PNG -> GIF のサンプルですが,動作しました.

もしかしたら,
最近の ImageMagick では Visual C++ ランタイムパッケージ
が必要ないのかも知れません.


[11395] Visual C++ ランタイムパッケージ返信 削除
2017/9/28 (木) 16:15:48 Mr.XRAY
> 最近の ImageMagick では Visual C++ ランタイムパッケージ
> が必要ないのかも知れません.


わっかりました.2009年の時は

 WandExport = 'CORE_RL_Wand_.dll';

     ↓ 以下に変更

  WandExport = 'CORE_RL_MagickWand_.dll'

という処理をしていませんでした.
Visual C++ ランタイムパッケージに CORE_RL_Wand_.dll があり,
それを使用するようにしたということのようです.
同名の dll は PHP 関係のライブラリにもあります.

なんとなくいきさつが見えてくる経過です (^^;
つまり,Visual C++ ランタイムパッケージは不要ということです.ハイ.
記事の方も修正しておきました.

あと,問題は文字列の扱いですね.UTF-8 ...


[11403] ImageMagickで日本語返信 削除
2017/10/1 (日) 19:10:47 Mr.XRAY
> あと,問題は文字列の扱いですね.UTF-8 ...

少しやってみましたが無理があるようです.
下の図はコードそのテストの一部です.
logo.png 画像にテキスト書き込みで,サイズ変更して別名保存します.


[773] [06_ファイル名が日本語のファイルをアップロード ]
http://mrxray.on.coocan.jp/Delphi/plSamples/773_Indy_FTPGetPut.htm#06

のように  MECSUtils を使ったらと思ったけど残念 !!
ファイル名だから関係ないだろう !!
なんですが,溺れる者は何とかでして ... ハハハ.
だって,

[ ImageMagick のコマンドラインツールで PDF を JPEG 画像に変換]
http://mrxray.on.coocan.jp/Delphi/Others/ImageMagick.htm#04

ではファイル名に日本語を使用してますが,動作していますから.
コマンドラインからですと UTF-8 のファイルを使用すれば処理可能
なようですが,試していません.

[Unicode or UTF8 Format Text]
http://www.imagemagick.org/Usage/text/#unicode

implementation

uses
  magick_wand,
  ImageMagick;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  LReadPath  : UTF8String;
  LWritePath : UTF8String;
  Lwand      : PMagickWand;
  LDrawWand  : PDrawingWand;
  LText      : UTF8String;
begin
  LReadPath  := ExpandFileName('logo.png');
  LWritePath := ExpandFileName('logo2.png');

  MagickWandGenesis;

  Lwand     := NewMagickWand;
  LDrawWand := NewDrawingWand;
  try
    MagickReadImage(Lwand, PChar(LReadPath));

    DrawSetFontSize(LDrawWand, 300);
    LText := Utf8String('日本');
    MagickAnnotateImage(Lwand, LDrawWand, 150.0, 1500.0, 0.0, PChar(LText));
    MagickDrawImage(Lwand, LDrawWand);

    MagickScaleImage(Lwand, 250, 250);

    MagickWriteImage(Lwand, PChar(LWritePath));
  finally
    DestroyMagickWand(Lwand);
    DestroyDrawingWand(LDrawWand);
  end;
end;


最初の図が「日本」という文字列を描画したもの
次の図は「Hello!」という文字列を描画した結果

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82