名前 題名 ▼ 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でアルファチャンネル付きでメモリに保存する方法って > あるんでしょうかね・・・ > > お分かりになる方がいらっしゃれば、ご教示いただけると幸いです。 > > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link