スタンドアロンドキュメントクラスによって生成されたTikZ画像のPNG画像のサイズが間違っている

スタンドアロンドキュメントクラスによって生成されたTikZ画像のPNG画像のサイズが間違っている

次の LaTeX 原稿を考えてみましょう。この原稿では、ドキュメント クラスを使用して、画像のとイメージのstandalone両方を生成します。PDFPNGTikZ

\documentclass[tikz,convert]{standalone}
\begin{document}
\begin{tikzpicture}
  \draw (0,0) -- (1,1)
   [rounded corners] -- (2,0) -- (3,1)
   [sharp corners] -- (3,0) -- (2,1);
\end{tikzpicture}
\end{document}

結果のPDF画像は次のようになります (これはスクリーンショットです)。

結果のPDF画像

結果のPNG画像は次のようになります。

結果のPNG画像

なぜPNG画像が違うのか、そして間違っているPDFファイルよりも寸法が小さいですか?

答え1

概念的にはビットマップにはサイズはなく、ピクセル数だけがあります。マニュアルに記載されているように、standaloneクラスはconvert300dpiを想定しており、印刷用の高解像度画像を作成しますが、pdftexのデフォルトの画像解像度は実際には72dpiです。pngファイルはピクセルの意図したサイズを保存できるしかし、ほとんどのシステムではそうではありませんし、そうでない場合でもすべてのシステムがヒントを使用します。

だからどちらか

  \fbox{\includegraphics[scale=.24]{file.png}}% 72/300=.24

または

 {\pdfimageresolution=300 \fbox{\includegraphics{file.png}}}

同じサイズになります

 \fbox{\includegraphics{file.pdf}}

答え2

いいえ、そうではありません。それはどのように測定するかによって異なります。

MS Word での測定:

Word に配置された 3 つの異なる解像度の画像:

ここに画像の説明を入力してください

印刷する場合:

ここに画像の説明を入力してください

LaTeX での測定:

コード:

    \documentclass[]{standalone}
    \usepackage{graphics}
    \begin{document}
    \noindent
    \includegraphics{aaa.pdf}
    \includegraphics{aaa.png}
    \end{document}

PDF ビューアの 100% ズームでの画面上の測定:

ここに画像の説明を入力してください

Webページ上の測定:

ウェブブラウザで表示されるPNGのサイズは、画像の処理方法が異なるため、当てにすることはできません(こちらをご覧ください

1200 dpi の JPEG 画像を Imgur にアップロードし、Web ブラウザで表示します。

ここに画像の説明を入力してください

300 dpi の PNG 画像を Imgur にアップロードし、Web ブラウザーで表示します。

ここに画像の説明を入力してください

50 dpi の JPEG 画像を Imgur にアップロードし、Web ブラウザで表示します。

ここに画像の説明を入力してください

Web ブラウザで正しい寸法を表示するには、正しい dpi で PNG を生成する必要があります。次の演習を参照してください。

私の画面は2560x1440です。

画面の横幅は約23.5インチです

画面解像度は2560ドット/23.5インチ=109ドット/インチ

約 110 dpi の PNG を生成しました。

Web ブラウザで画面上の水平寸法を測定します。

ここに画像の説明を入力してください

答え3

ユーザーstandaloneマニュアル (v1.2 - 2015/07/15) では、生成された PNG 画像が期待どおりの物理的な寸法を持たない理由が説明されており、これらの寸法を適切に設定する方法も示されています。

PNG画像の物理的な寸法が間違っている理由

15ページのセクション4.6.1「変換設定」によると

以下のデフォルト設定が使用されます: [...] 密度 300dpi

「dpi」は「dot per inch」の略で、別名「pixels per inch」(「ppi」)です。画面に正しい寸法で表示するには、PNG の生成に使用される ppi が画面の ppi と等しくなければなりません。

画面のppiを確認するには、この簡単な方法Wikipediaの画素密度ページ。この方法では、画面に定規を当てて、特定の数のピクセルで構成されていることがわかっている線の長さを測定します。

PNG画像の物理的な寸法が正しいことを確認する方法

17 ページの表 1 には、生成された PNG 画像が目的の物理寸法を持つようにするための 2 つの方法が示されています。どちらの方法も、次のようにドキュメント クラス オプションに値を割り当てることによって構成されますconvert

\documentclass[tikz,convert={...}]{standalone}
  1. 画面の ppi を設定しますconvert={density=<d>}<d>

  2. を設定しますconvert={size=<w>x<h>}。ここで、 は、<w>x<h>画面に表示されたときに目的の物理的寸法を持つことがわかっている PNG 画像のピクセル寸法です。

    今回の場合、PDF 画像のスクリーンショットの物理的な寸法は正しいと述べているため、ピクセル寸法、つまり 137x50 を使用します。macOS を使用している場合は、Finder から直接読み取ることができます。

関連情報