4.29 【Import Component】 Exportを調べる前に3.0からサポートされていたフィルタになにか変わったところがないかをチェックしてみた。指定できるパラメータが増えているかと思ったら、ぼかしとシャープで「明るさ」パラメータが減っていた。「明るさ・コントラスト」フィルタが追加されたからなくなったのかな。スクリプトから実行してみてもなにも起こらなかったので完全にサポートされないということらしい。となると3.0の時に作ったAppleScriptのスクリプトが思ったように動かないという可能性があるわけか。ややこしいのぉ。 Export Componentはおそらく4.0以降を必要とするのだろうからもう少しドキュメントの類が出揃ってから考えることにして、Import Componentをいじってみる。普通に使うならファイルを指定すればあとはやってくれるんだけど、今回はExportのために使うんだからちょっとややこしい。なにか使えそうなルーチンはないかなとドキュメントを探すと、GraphicsImportSetDataHandleというのを発見。まず手動でImport Componentを開いておいて、このルーチンを使ってグラフィックのデータへのハンドルをわたしてやればいけるのかな。 さっそくJPEGに変換したデータをハンドルに入れてわたしてやると、そこまではうまくいったみたい。で、そこからGraphicsImportDoExportFileDialogを実行すると、PictureViewerと同じダイアログが現われた。おお、こんな感じなのかな。あとはGraphicsImportExportImageFileで書き出し……と思ったら、ダイアログのルーチンで保存までやってくれるらしい。ファイルのクリエータがPictureViewerになってしまうけど、書き出しだから特に問題はないかな。 JPEGにした状態からなら上記の方法であっさりと成功したのだけどPixMapからはどうしたらいいんだろ。まさかPixMapHandleをわたしてうまくいくなんてことはなさそうだし……。PICTからならImportできるんだからPictureにしておけばいけるのかな? と、さっそく実験。だめ。データのフォーマットが違うみたい。んー、PICTだと画像データの前にダミーの512バイトが必要だからひょっとしたらそれをつけてやればいいのかな? あ、、うまくいった。おお。 わざわざPictureにして512バイトつなげるってのがややこしいけど一応できたからこれでいいのかな。あとはこの書き出しをスクリプト対応にするかという問題が。フォーマットによってパラメータがかなり違うからどう扱うかというのが難しいけど対応できればいろいろ使えそうな気がする。たとえば「export window 1 as PNG with options {colors: best interace: true filter: best}」とかいう感じかな? 色数については4色でもグレーとカラーがあったりしてややこしいのだけど簡単にいけるのかなぁ。ん〜。 あとは切り取り。SimpleTextみたいに画像ウィンドウの上にカーソルを持っていくと十字の形に変わってドラッグして選択って感じかな。ドラッグしたあとはコピーしてクリップボードから新しく画像を作るか、選択範囲内だけの新規ファイルを作る機能を追加するかという感じかな。 もちろんスクリプトのサポートもするつもり。HyperCard風に「drag from {x1,y1} to {x2,y2}」にするか、選択しかしないのだから「select {x1,y1,x2,y2} of window 1」とかかな。選択の解除は、、「select none of window 1」になるんだろうか。んー、「empty」の方がいいかな。あ、「select from {x1,y1} to {x2,y2} of window 1」がきれいかな? 範囲の指定になるからプログラムのほうがややこしいかもしれないけど(笑)。 |