UnWeeklyAlteryxTips#114 ピクセルサイズから用紙サイズを決定する

Alteryx

AlteryxのTipsを不定期にお届けしている週間(?)AlteryxTipsです。

今回は、前回せっかく画像サイズを取得したので、そのサイズから印刷サイズがいくらになるのが計算してみましょう。

ピクセルサイズと用紙サイズの関係

インタラクティブチャートツールと画像ツールはピクセルサイズで大きさが決定されます。しかしながら、その他のAlteryxのレポーティングツールはインチまたはcmが基準になっています(レンダリングツールの出力さえピクセルではなくインチもしくはcmです!)。

画像を紙に印刷する時はdpiが関連してきますが、Windowsの場合、ディスプレイは96dpiです。そして、Alteryx内でのdpiも96dpiを基準としています(公式なドキュメントにはこのようには書いていませんが、色々と試した結果からそう判断しています)。

それでは、ピクセルサイズを用紙サイズに変換する時は、どのような計算式を使えば良いのでしょうか?

これは・・・

画像のピクセルサイズ ÷ dpi(Windowsの場合 96) x 2.54 = cmでのサイズ

という式になります。

一方、Alteryxを英語版で使うと、用紙サイズはインチになってしまいますが、インチの場合はどうでしょうか?

画像のピクセルサイズ ÷ dpi(Windowsの場合 96) = インチでのサイズ

上のように、インチの場合、掛け算していた2.54がなくなるだけです。

画像を背景や表紙に貼る場合

それでは、大きめの画像を使って例えば表紙にするとか、PowerPointのテンプレート背景にする場合、どのようなサイズの画像を使えば良いのでしょうか?

画像ツールで読み込んだ画像の場合、ピクセルサイズで用紙上に再現できる最大サイズがそのまま決まります。最大サイズ、と記載しているのはレイアウトツールで設定したサイズが本来のサイズより小さい場合、自動的に縮小されるからですが、ちなみに、、、拡大したい場合、読込み時に固定幅で設定した幅より広がらないので注意が必要です。

つまり、画像は読み込み時のみ拡大・縮小ができ、読み込んだ後は自動的に縮小はされるが、拡大はされない(し、拡大できない)、ということです。

ただ、レポートテキストツール内で、内部のHTMLタグをいじれば拡大はできるので、そのような方法を取るのも一つの手かもしれません(ちょっとマニアックなネタですが後ほど解説します)。

画像ツールからそのまま背景画像にする場合

画像をそのままファイルの背景画像として使いたい場合はよくあります。特定の組織のフォーマットなどが決まっている、というケースは多いかと思います。

Alteryx内で画像を背景画像にしようとすると、どうなるのでしょうか?実は、出力先のファイル形式によって、動きが異なるので注意が必要です。例えば、PDFでは背景全体に画像を設定、ということができないので、うまくヘッダやフッタを使う必要があります。PowerPointの場合は、背景に画像を貼り込めます。

PowerPointの場合

さて、PowerPointの場合ですが、用紙サイズは16:9か4:3しか選べません(A4用紙サイズ、などが選択できません)。また、気をつけないといけないのが、解像度の基準が96dpiになっていることです。例えば、よく流通しているのは72dpiの画像になるかと思いますが、これを使うと75%まで自動的に縮小されます。ちなみに画像の解像度が不明だったりすると、自動的に96dpi基準になるようです。

dpiが変更できないけど、出力されるレポートに空白ができて困る、という場合は、画像ツールにて、読込み時のサイズを縮小される分を見越して、「画像設定の編集」で大きめのサイズで読み込みの設定すれば対応できるかと思います(バッチマクロなどを使わないと動的にはできないので、とにかく大きめのピクセルサイズとして読み込みましょう!大きすぎたら自動的に縮小してくれるので問題ないと思います)。

16:9のパワポの場合

注意:レンダリングツールのPowerPoint出力のスライドのサイズはUIを日本語にしているとうまく動かないので、英語UIで使うか、XMLエディタで「ワイド」という文字を「wide」に変更してください(Designer 2025.2 パッチ3で確認)。

PowerPointでは背景のフォーマットを作ることが多いかと思います。これを一枚絵で作って、それを画像ツールから利用することを考えてみましょう。

レンダリングツールの出力フォーマットをPowerPoint形式にし、16:9で出力する場合は、1920 x 1080などで作れば良いと思いますが、66%程度の縮小が入ってしまいます。画像はきれいになるかもしれませんが、ファイルは重くなります。それでは、どのようなサイズがジャストフィットになるのでしょうか?

結論としては、96dpiで1280×720で画像を作って貼るのをおすすめします。

4:3のパワポの場合

ピクセルサイズとしては、1024 x 768 ピクセルの画像が良いかと思います。よく使われていた画像サイズなのでわかりやすいサイズですよね。しかし、96%のサイズに縮小されます。きっちりとしたサイズにするなら、962 x 721ピクセルサイズがジャストフィットサイズです。もちろん96dpiで作りましょう。

方向ピクセルサイズcmインチ
縦幅96225.5cm10インチ
横幅72119.1cm7.5インチ

正直なところ、わかりやすい1024 x 768などのサイズで良いと思います(962 x 721は中途半端ですよね)。

A4縦置きの場合

A4縦置きはPDFやWordで使われるスタイルになるかと思います。A4縦置きの用紙に印刷する場合、高さ1122ピクセル、横幅が793ピクセルくらいがジャストサイズになります。これはスクリーン用のdpiで計算しているので実際に印刷すると結構粗い物ができあがるかもしれません。

これも画像に微妙にサイズの縮小が入ったりするので、出力フォーマットによって出し方の工夫が必要です。

フォーマット出力
PDFそのままだと縮小されるので、レイアウトツールの自動サイズを設定する必要あり
Word(docx)そのままだと縮小されるので、レイアウトツールの自動サイズを設定する必要あり
RTFそのままだと縮小されるので、レイアウトツールの自動サイズを設定する必要あり
Excelそもそもセルの幅が合わない
PowerPoint対象外:用紙は選べない(スライドの縦横比のみ)
HTML問題なし
MHTML問題なし
Composer問題なし

PDF/Word/RTFについては同じような動きをしていますが、どのサイズでもなぜか勝手に縮小されて隙間ができてしまいます。また、PowerPointと同じようなサイズ指定は効果ありませんでした。唯一動いたのが、レイアウトツールを噛ませる方法です。ここでは、以下のようにレイアウト幅を「自動」にしておきます(デフォルトではパーセンテージになっています)。

ワークフローとしては以下のようになります。

A4横置きの場合

A4横置きの用紙に印刷することを考えると、横は1122ピクセル、高さは793ピクセルくらいの画像を準備すれば良い、ということになります。

それ以外の動きは、縦置きの場合と同様です。

インタラクティブチャートのサイズ感

インタラクティブチャートツールの設定は、デフォルトでは幅が700ピクセル、高さが849ピクセルになっていますが、これは実体として用紙サイズではどれくらいのサイズなのでしょうか?

計算式は以下のとおりです。

Height : 849 / 96 * 2.54 = 22.46cm
Width : 700 / 96 * 2.54 = 18.52cm

なんとA5サイズ(21cm x 14.8cm)より大きいんですね。つまり、A4に印刷する場合、用紙のほとんどを埋め尽くすサイズ感です。そして、残念なことに、Alteryxではdpiを設定することはできません。基本的にdpiは96で計算されているようです。

例えば、A4縦置きの用紙の左半分をグラフとして使いましょう、ということになると、大体400ピクセルくらいのサイズで作る必要があります。

ただ、インタラクティブチャートはレイアウトツールでサイズを固定サイズで決めてあげると、そのサイズになるように自動的に縮小されます。逆に決めてあげないと本来のサイズまで広がろうとします。

ちなみに、先程述べた400ピクセルのサイズで作ろうとすると、文字のフォントやサイズ感などの部分で荒くなったりするので、大きめに作っておいて、縮小するようにした方がきれいに作れます。ただし、出力フォーマットによってはこの方法を使うのが難しいことがあるので要注意です(Excel形式など)。

画像サイズをワークフローの途中で調整する

基本的に画像ツールで取り込んだ画像は、読込み時の「画像設定の編集」でサイズを指定しない限り、自動的な縮小しかできません(明示的にサイズを指定できない)。

ただ、実際はこのサイズというのが、レポートスニペットのタグでwidthで指定されているだけで、実体の画像のサイズは変更されていません。そのため、このタグの部分を書き換えることで、サイズ変更を行うことができます(以下の例では境界線も描くようになっています)。

<div style="border:1px solid #000000;"><img src="C:\temp\Linear Regression.jpg"  width="1200" /></div>

ちなみに、サイズ指定していない場合、以下のようにタグは記載無しとなります。

<div style="border:1px solid #000000;"><img src="C:\temp\Linear Regression.jpg" /></div>

例えば、以下のような数式でタグを書き換えることができます(ここでは1920に強制的に書き換えています)。

IF REGEX_Match([Image], '.*?<img src=".*?".* width=".*?".*?/>.*') THEN 
 REGEX_Replace([Image], '(.*?<img src=".*?".* width=").*?(".*?/>.*)', "$1")+
 "1920"+
 REGEX_Replace([Image], '(.*?<img src=".*?".* width=").*?(".*?/>.*)', "$2")
ELSEIF REGEX_Match([Image], '.*?<img src=".*?/>.*') THEN
 REGEX_Replace([Image], '(.*?<img src=".*?)(/>.*)', "$1")+
 ' width="1920" '+
 REGEX_Replace([Image], '(.*?<img src=".*?)(/>.*)', "$2")
ELSE [Image]
ENDIF

なお、タグを書き換えると、レポートスニペットではなく単なるテキストデータとして扱われるようになります。これを元のレポートスニペットに戻すためには、レポートテキストツールのエキスパートモードを使いましょう。

サンプルワークフローダウンロード

まとめ

  • 最初、72dpiの画像とdpi情報がない画像を使っていて、なぜか画像が縮小されるということで超悩みまくりました。dpiまで見てるとはさすがに思いもよらなかったです(そんなの見ずにピクセルだけでやってほしかった・・・)。
  • ということで、Alteryx内では画像の解像度も出力ファイルに影響を与えますが、基準となるサイズは96dpiとなっています。
  • ワークフローの途中で画像のサイズを変更したい時は、レポートスニペット内のタグを書き換えてください。

コメント

タイトルとURLをコピーしました