喫茶XRAYトップページ

[スレッド全体
]

[12813] ImageMagickにて返信 削除
2019/5/7 (火) 00:51:02 Sara
皆様、こんばんわ

最近、ImageMagickを使って遊んでいるのですが・・・

Bitmapへの変換で困っています。

単純な変換は以下でできます。

    MagickWandGenesis;
    Mem := TMemoryStream.Create;
    try
      cnt := 0;
      Lwand := NewMagickWand;
      ret := MagickReadImage(Lwand, PChar(UTF8Encode(FileName)));
      if  ret = 0 then exit;

      HasAlpha := MagickGetImageAlphaChannel(Lwand) = MagickTrue;
      MagickSetImageFormat(Lwand,Pchar(UTF8Encode('BMP3')));
      New(PB);
      PB := MagickGetImagesBlob(Lwand,@cnt);
      _TStream(mem).SetPointer(PB, cnt);
      Mem.Position := 0;
      Bmp.LoadFromStream(Mem);
    finally
      Mem.Free;
      DestroyMagickWand(Lwand);
    end;

で、なにに困っているか・・・アルファチャンネル付きの画像を
上記で変換すると、綺麗さっぱりアルファチャンネルが抜け落ちます。
Mem.SaveToFile('D:\test.bmp');とすると、24Bit Bitmapになります。

問題は、 PB := MagickGetImagesBlob(Lwand,@cnt); です。

ここを、MagickWriteImage(Lwand,pchar(UTF8Encode('D:\test.bmp')));

とかすると、正常にアルファチャンネル付きBitmapが出来上がりますが、
ファイルに保存したくない・・・

MagickGetImagesBlobでアルファチャンネル付きでメモリに保存する方法って
あるんでしょうかね・・・

お分かりになる方がいらっしゃれば、ご教示いただけると幸いです。

 

[12814] Re:ImageMagickにて返信 削除
2019/5/7 (火) 07:36:10 Mr.XRAY
▼ Saraさん

> MagickGetImagesBlobでアルファチャンネル付きでメモリに保存する方法って
> あるんでしょうかね・・・


ImageMagick の記事は掲載しているけど,私は詳しいことは全くわかりません.
ゴメン !!

imagemagick alpha でググると結構ヒットするので苦労している方がいるようです.


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