Skip to main content
Inspiring
July 26, 2023
Answered

手動でTIFFデータに変換した時と、スクリプトを使って変換した時でデータが違う

  • July 26, 2023
  • 2 replies
  • 2631 views

お世話になります。

 

IllustratorデータをPhotoshopで開いてTIFFデータに変換する作業をしており、数が多い時はその作業をスクリプトを使って一気にやっています。

 

ですが、手動でTIFF保存した時とスクリプトでやった時でデータが微妙に違うことに気づきました。

 

イラレデータを開いた時のPDFオプションや、TIFF保存する際のオプションも見てみたのですが違いは特に感じられなかったような・・・。

 

 

pdf_opt = new PDFOpenOptions();
pdf_opt.cropPage = CropToType.MEDIABOX;//メディアボックス
pdf_opt.antiAlias = false; //アンチエイリアス
pdf_opt.constrainProportions = true; //縦横比を固定
pdf_opt.mode = OpenDocumentMode.GRAYSCALE; //表示モード
pdf_opt.page = 1; //ページ番号
pdf_opt.BitsPerChannelType = BitsPerChannelType.EIGHT; //ビット数は8bit
pdf_opt.resolution = 2400; //解像度

tif_opt = new TiffSaveOptions();
tif_opt.alphaChannels = false; //αチャンネルを保存
tif_opt.annotations = false; //注釈を保存
tif_opt.byteOrder = ByteOrder.MACOS; //バイト順序
tif_opt.embedColorProfile = false; //カラープロファイル
tif_opt.imageCompression = TIFFEncoding.TIFFLZW; //圧縮形式
tif_opt.layers = false; //レイヤーを保存
tif_opt.saveImagePyramid = false; //画像ピラミッドを保存
tif_opt.spotColors = false; //スポットカラー
tif_opt.transparency = false; //透明情報

 

添付した画像の設定を、スクリプトで実現しようとしてます。

何がおかしいかわかる方いらっしゃったら教えてください。

 

macOS Monterey バージョン12.6.3

Photoshop2022 バージョン23.5.5

This topic has been closed for replies.
Correct answer ajabon grinsmith

ありがとうございます。

基本的には全てミリメートルで作っていて、その0.01mmの違いで誤差が起こってしまうので、PDFで開く時点で整数するというよりは0.01mmがあるまま開きたいんです。

 

ただ整数で開くものもあれば0.01mmついて開くものもあって、ずっとなんでだろうって思ってたんですが、イラレデータの作り方を確認してみたら多分それのせいかなってのは発見しました。

 

比べたものを添付してみましたが、ちょっと分かりづらいかもです。。。

 

基本的に②のやり方で作っていたので、0.01mmの誤差が出ていたのかなと思います。それ以外に、トンボの太さを変えている場合にも違いが出る場合があるっぽい(0.2mmの時と0.15mmの時があったりする←めんどくさくて比べてない)ので、イラレデータの作り方を見直した方がいい気がしました。

 

何で手作業の時とスクリプトの時で0.01mmの誤差が出てしまうのか、原因はよく分からなかったんですが、③(④は避けたい)のようにトンボサイズ(バウンディングボックス)をアートボードサイズにしてしまえばズレが起こらないっぽいので、この作り方で統一しようかと思ってます。

 

ちなみに今回例として作ったデータは、メディアサイズでPDF読み込むと全ての結果が同じになりました。バウンディングボックスで読み込むと誤差が生まれました。

 

③の作り方ならスクリプトでやっても手作業でやっても、バウンディングボックスでもメディアサイズでも全てのデータが一緒になるので結果それがいいかなって感じです。

 

長々となりました。。申し訳ないです。。


添付拝見しましたー
添付画像は、読み込みオプション画面 と 画像解像度ダイアログのスクショですね。
これは、「開き方を指定する時のサイズ と 実際のPhotoshopドキュメントのサイズ」と言い換えることができます。

 

こちらの問い方も不明瞭だったかもしれませんが、
比較しなければいけないのは、
手で開いた時の画像解像度ダイアログ と スクリプトで開いた時の画像解像度ダイアログ です。
それがスクリプトで処理する際のネックだという話だったと思うのですが。

 

「開き方を指定する時のサイズ と 実際のPhotoshopドキュメントのサイズ」が異なってしまう件については、ちょっと(全然ちょっとじゃなくなってますが)説明します。
まず、元のIllustratorドキュメントのアートボードサイズがほぼそのまま、PDF読み込みオプションで入力済みの幅・高さになっていると思います。

ただし、Illustratorは小数第4位まで表示されます(第5位が四捨五入されます)。
実際にはもっとこまかい値を持っていますが、末尾の単位まで表示させるための仕様でしょうね。
スクリプトで小数第13位ぐらいまで参照することができます。ポイント→ミリの計算がだるいのでスクショは環境設定を元からポイントにしてあります。上部オプションバーがアートボードサイズで、変形パネルに見えるのはスマートガイドでアートボードにフィットさせて作った長方形のサイズです。

 

スクリプトで幅を参照したのがこれ。


仮にこの時点での数値が丸められることをきらう場合は、いずれかのサイズ欄にカーソルを立ててそのままenterすれば、見えている値 = 実際の値 とすることができます(業務工程上、やっていいことなのかはわかりませんが性質の説明の例えとして)。
……って、ちょっと誤差が出ましたがw ここはアプリ性能の限界でしょう。


対してPhotoshopのほうはというと、小数第2位までですね…ここで表示される値に違いが出ます。
(Photoshopのほうはミリメートルのままなので数値ぜんぜん違いますけど、小数第2位までしか見えないねーというのを見せたいだけなので大丈夫です)


これもスクリプトから幅を参照してみましょう。
こんなかんじです。


ここまでで説明したかったのは、数値の丸めに惑わされすぎてはいけない、ということです。

------------


次に、PDF読み込みオプションと画像解像度で見られる幅・高さの差分について。
というのは前回の返信でも触れましたが…
添付いただいた1つめと3つめを例にとりましょうか。

PDFの幅   126.53 mm
指定の解像度 2400ppi(1インチに2400ピクセル、という意味)
1インチは 25.4mm(規格上の固定値)
なので、いったん幅をインチになおします。
126.53 ÷ 25.4 = 4.981496062992126インチ(Macの電卓で計算)
2400ppiなので、
4.981496062992126 × 2400 = 11955.590551181102362 これが必要なピクセル数なのですが、ピクセルの最小単位は1なので小数を四捨五入します。すると11956。
スクショの解像度は11955ですが、これはおそらくPDFの正確な幅と、スクショで見えていない状況との誤差かと思います。なので11955が正しいとしてしまいます。

ここから、このピクセル数で2400ppiでは何インチになるかを計算します。
11955 ÷ 2400 = 4.98125インチ
ミリメートルに換算すると
4.98125 × 25.4 = 126.52375mm
Photoshopは小数第2位までしか見せてくれないので、第3位を四捨五入して
126.53mm
というかんじです。

誤差の出なかった3つめでもやってみましょう。
PDFの幅 125.4mm
解像度 2400ppi
インチになおして
125.4 ÷ 25.4 = 4.937007874015748
2400ppiなのでピクセル数が
4.937007874015748 × 2400 = 11848.818897637795276
ピクセルは整数なので四捨五入して
11849
こちらは1つめのような誤差ありませんね。
11849 ÷ 2400 = 4.937083333333333インチ
ミリに直して
125.401916666666667
小数第3位を四捨五入して
125.4mm ぴったり。

どこか細かいところは事実と違うかもしれませんが、理屈は外れていないかと思います。

 

以上です。参考になるでしょうか。

2 replies

Ten A
Community Expert
Community Expert
July 27, 2023

アクションで処理させたほうが良かったりして…

nekkonekoAuthor
Inspiring
July 28, 2023

ありがとうございます。

アクションに登録してドロップレットとかで一気にできないかも試してみたんですが、今のところうまくいかなかったです。pdfで開いて、用意してあるアクション実行し、イラレのファイルと同じ階層にTIFF保存するという動作なのですが、複雑すぎてスクリプトでしかできませんでした・・・。

 

今までも手作業でやってきたので、データが変わるのは嫌なので今まで通りにしておきます。

Ten A
Community Expert
Community Expert
July 28, 2023
アクション登録して「ファイル>自動処理>バッチ」で実行でダメですか?
nekkonekoAuthor
Inspiring
July 26, 2023

ちなみにですが、cropPageの設定をバウンディングボックスにすると、手動でもスクリプトでもデータは変わらないことの方が多かったです。(100%ではない)

Illustratorデータの作りがおかしいということなのでしょうか・・・

大したことじゃないけど追記でした。

katayanagi51
Community Expert
Community Expert
July 27, 2023

スクリプト方面はまったくわからずお力にはなれないのですが,「データが微妙に違う」の違いを具体的に書かれたほうがよいと思いました。なにがどう違ってしまうのでしょうか。