みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Win10 FMP15adv です。
オブジェクトフィールドをもつデータベースを作って、写真やスクリーンショットその他雑多な種類の画像を入れました。
200レコードほどでファイルサイズを見てみると、100MBにもなっていて、画像の縮小が必要と気付きました。(-_-;)
ファイルのコピーを作って、オブジェクトフィールドをすべて消去して見ると、ファイルサイズは1MB以下です。
これから、1レコードずつオブジェクトの写真やPDF?を、外部に持ち出して縮小、再挿入しようかと思っていますが、
現在レコードの画像のサイズを知ることができれば(Jpeg 50KB なのか PNG 1MBなのか)、縮小不要なレコードをスルー出来、仕事が減るんじゃないかと。
ファイルでは「プロパティ」でサイズを見ることができますが、オブジェクトで同様のことは可能でしょうか?
あるいは既に作ってしまったファイルで、ほかにもっとスマートな方法があればご教示ください。
Offline
GetContainerAttributeという関数があるのでそれを使うと色々分かります。
オブジェクトフィールドのオプションで「データ格納」タブの「オブジェクトデータを外部に保存」にチェックを入れ、「オープン格納」を選択すると、そのフィールドに挿入されている全てのファイルが指定した「保存先」以下に展開されるので、それをそのまま加工するのが楽だと思います。
パスが変わらないように気をつければ、ファイル加工後もファイルメーカーからそのまま参照できるので手間も掛かりません。
Offline
未検証なので、テストファイルでお試しください。
自動縮小スクリプト
念のため、検証用フィールド4つ想定
・画像
・画像サイズ(計算フィールド:GetContainerAttribute ( 画像;"fileSize" ))
・縮小画像
・縮小画像サイズ(計算フィールド:GetContainerAttribute ( 縮小画像;"fileSize" ))
スクリプト
レコード移動【最初の】
Loop
If ( GetContainerAttribute ( 画像;"fileSize" )> 3000000 )・・・3M以上の場合
フィールド設定:縮小画像 計算式:GetThumbnail ( 画像;500;500 )
End If
レコード移動:次の:最後まで来たら終了
End Loop
現在のスクリプト終了
問題なさそうなら、直接画像フィールドで行っても良いかと。
あと、画像の大きさは500部分をいじると良いでしょう。
以前ん〜と悩んだのがサイズ指定時に
・50%指定とかで指定出来ないのでしょうか?(50%とすると、画像を50%サイズに変更してくれる)
or
・ファイルサイズ指定出来ないのでしょうか?(1M指定すると、画像を約1Mサイズにしてくれる)
以前試した時に出来なかった記憶があるのですが、出来るなら知りたい。。。。
追記:
GetThumbnail ( 画像;GetWidth (画像)/2;GetHeight ( 画像)/2)で50%縮小に出来るとFMP12のヘルプに載ってました。
サイズ指定は出来ないようですね。失礼しました。
Last edited by tomato (2017-08-10 10:00:39)
Offline
tomato さんの方法か GetThumbnail は 指定サイズ以下なら処理をしない(拡大はできない)ので
ファイルサイズのチェックを省略していきなり GetThumbnail という手もあります。
そもそも FileMaker はデータベースアプリケーションなので画像加工機能を求めるのは筋違いですね。
処理の仕上がりに拘るなら画像加工は別途専用のアプリケーションで行いましょう。
GetHumbnail
https://www.filemaker.com/help/15/fmp/j … bnail.html
Last edited by Moz (2017-08-10 07:59:27)
Offline
micさん tomatoさん Mozさん
ありがとうございます。
出来ました。
GetContainerAttribute GetThumbnail 関数を初めて知りました。
大変勉強になりました。
Offline
Pages: 1
[ Generated in 0.034 seconds, 9 queries executed - Memory usage: 513.58 KiB (Peak: 518.48 KiB) ]