喫茶XRAYトップページ

[スレッド全体
]

[12828] Re4:ImageMagickにて返信 削除
2019/5/7 (火) 17:42:53 SO
▼ Saraさん

>
> しかし、いずれにしても
>
>  PB := MagickGetImagesBlob(Lwand,@cnt);
>
> だと、アルファチャンネルデータが消えてなくなる・・・ので、
> (何か勘違いしていなければ・・・ 帰ってから再度試しますが)


そもそも、透過する色は指定してますか?
ぱっと見たソースだと指定してないように見えます。。。


> MagickBooleanType MagickWriteImagesFile(
>     MagickWand* wand,
>     FILE* file
> )
>
> を使って、CreateFileで FILE_ATTRIBUTE_TEMPORARY を指定して旨い事
> できないかと試したものの、宣言の仕方が悪いのか例外が発生する・・・
>
> ちなみに、上記の宣言はDelphiだとどうなるのでしょうか・・・(^^;


分かりません!!


[12829] Re5:ImageMagickにて返信 削除
2019/5/7 (火) 18:35:36 Sara
▼ SOさん こんばんわ

> > しかし、いずれにしても
> >
> >  PB := MagickGetImagesBlob(Lwand,@cnt);
> >
> > だと、アルファチャンネルデータが消えてなくなる・・・ので、
> > (何か勘違いしていなければ・・・ 帰ってから再度試しますが)
>
> そもそも、透過する色は指定してますか?
> ぱっと見たソースだと指定してないように見えます。。。


おぅ・・わかりづらくて、ごめんなさい。前提条件が無いですね・・・

ret := MagickReadImage(Lwand, PChar(UTF8Encode(FileName)));

で、テスト的に読み込みをしているのがアルファチャンネル付きPNGファイルです。

なので、そのままMagickWriteImageで書き出すとアルファチャンネル付きBMPに

なるわけですが、MagickGetImagesBlobでメモリに出力すると・・と言う話になるわけです。

もう少し、いじってみます。



[12830] Re6:ImageMagickにて返信 削除
2019/5/7 (火) 18:43:09 SO
▼ Saraさん

なんですかね?

HasAlpha := MagickGetImageAlphaChannel(Lwand) = MagickTrue;

HasAlphaはTrueを返すんですよね?

[12831] Re7:ImageMagickにて返信 削除
2019/5/7 (火) 18:46:32 Sara
▼ SOさん
>
> なんですかね?
>
> HasAlpha := MagickGetImageAlphaChannel(Lwand) = MagickTrue;
>
> HasAlphaはTrueを返すんですよね?



Trueになります。


なにか、大勘違いしてますかね・・・(^^;

[12832] Re8:ImageMagickにて返信 削除
2019/5/7 (火) 19:23:23 Sara
▼ SOさん
> >
> > なんですかね?
> >
> > HasAlpha := MagickGetImageAlphaChannel(Lwand) = MagickTrue;
> >
> > HasAlphaはTrueを返すんですよね?
>
>
> Trueになります。
>
>
> なにか、大勘違いしてますかね・・・(^^;



とりあえず、解決しました・・・


      PB := MagickGetImagesBlob(Lwand,@cnt);
      _TStream(mem).SetPointer(PB, cnt);
      Mem.Position := 0;
      Bmp.LoadFromStream(Mem);
      Bmp.SaveToFile('D:\test.bmp');

で、アルファチャンネル付きBMPが出力されることが確認できました。
Mem.SaveToFileでも正常にアルファチャンネル付きBMPになります。
(そりゃ、そうだ)


原因がわかりません・・・(^^;

今日テストしたら、24BitのBmpで出力されません・・・
PCの誤動作だったのでしょうか・・・

昨日は随分悩んだのですが・・・(^^;

と、いうわけで、大変お騒がせいたしました。m(_ _)m

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