「画像データの実際のバイトサイズを変更せずに、ImagemagickでDPIを変更したい。」
これは完全に不可能です!
なぜなら:
more "Dots per Inch"
<==> more pixels per area
<==> more total pixels per image
<==> more total bytes per image
また、実際のDPIが何であるかを理解していないようです。
- これは完全に抽象的な値であり、印刷物の絶対サイズを知っているか、画面またはモニターでレンダリングしている状況でのみ実用的な値を取得します。
- 1インチ幅の正方形にまったく同じ72x72ピクセルの画像を「印刷」できます。印刷の解像度はになり
72dpi
ます。
- 1/4インチ幅の正方形にも「印刷」できます。印刷の解像度はになり
288dpi
ます。
- (注:
288dpi
1インチの正方形に「印刷」すると、同じ画像ではなくなります:プリンタードライバーまたはその他のフィルタリングメカニズムを介して外挿が行われ、代わりに288x288ピクセルの画像になります72x72ピクセルの画像...)
- どちらのプリントアウトにもまったく同じ画像情報が含まれます。288dpiの画像には、突然多くの情報が含まれることはありません。
あなたが広い広場、しかしで1インチのように、元の72x72ピクセルの画像を印刷したい場合は288dpi
、あなたがする必要があります再スケール(それをスケールアップし、この場合には)画像を。オリジナルの1ピクセルごとに、4ピクセルの新しいアップスケールされた画像が必要です。これらの4つのピクセル(そのうちの3つの新しいピクセル)に必要な色の値を計算するために使用できるさまざまなアルゴリズムがあります。
- 元のピクセルと同じように指定できます(これは非常に「生の」アルゴリズムで、
- または、元のピクセルの色の値を隣接するピクセルの色の値と平均化することもできます。
いずれにせよ、あなたはそれぞれ288ピクセルの高さ(288x288ピクセル)の288行のピクセルで構成される大きな画像を作成しています。
「画像->印刷サイズ」を実行したときにGimpが行うこと:絶対ピクセルサイズの必要な変更を再計算するプロセスを簡素化し、ユーザーフレンドリーにします。この目的のために...
- ...最初にDPIについて尋ねられるのは、特定のプリンターが印刷解像度を任意に変更できないためです(1つだけでなく、2つまたは3つの異なる解像度を提供できるものもあります)。そのため、どの解像度で印刷するかを尋ねられます。それが最初の情報です。
- ...次に、2番目の情報も要求します。どのサイズ(
cm
、mm
またはinch
)で印刷物を紙に表示するかです。
これら2つの情報に従って、Gimpは要求された解像度で要求されたスペースを埋めるために使用する必要のあるピクセルの総数を計算します(元のピクセル数から外挿します)。
ただし、ピクセル数を増やしてラスターイメージを拡大しても、実際の情報は追加されず、架空の「品質」が追加されるだけです。スケールアップアルゴリズムが「良い」アルゴリズムである場合、人間の目にはより良く見えるかもしれません。単純なアルゴリズムのように、既存のピクセルを2倍、3倍、4倍にすると、見苦しくなります。
ラスターイメージの場合
、DPI設定は印刷または表示のコンテキストにのみ関係します。プリンターまたはモニターが与えられた、固定された解像度のため。そのため、それだけの情報です...
- ...プリンタドライバまたは
- ...印刷をサポートする画像処理アプリケーション
知っておく必要があります。
そして、ImageMagickのドキュメントは私と完全に一致しています。
-density width
-density widthxheight
デバイスにレンダリングするための画像の水平および垂直解像度を設定します。
ただし、ベクター画像またはファイル形式(PDFやPostScriptなど)の場合、DPI設定は、それらをラスタライズするコンテキストで非常に重要です。DPIを高くすると、より多くの画像情報がラスター形式に転送されるため、実際の元の品質からより多くの詳細が保持されます。特定のサイズのベクター画像をmm
、cm
またはinch
より高いDPIを持つラスターに変換する場合、画像内の合計ピクセル数が多くなります。
また、ImageMagickは「印刷」をサポートしていません。代わりに、ImageMagickのみ...
- ...ファイルを特定のラスタ形式から他のラスタ形式に変換します。
- ...または、ラスターイメージを縮小または拡大します。
- ...または特定のアルゴリズムに従って色の値を変更します。
- ...または画像を切り取り、オーバーレイし、反転し、ミラーリングします。
- ...そして何でもない....
...しかし、操作された画像を印刷するには、別のプログラムを使用する必要があります。
一部の画像形式(TIFF、PNGなど)は、メタデータにDPI設定を内部的に保存することをサポートしています。
ただし、これは、基になるラスターイメージを変更しない「ヒント」属性にすぎません。それがこの発見をした理由です:
「ファイルをチェックしても同じままです。」
この「ヒント」は、プリンタードライバーまたはLaTeXなどのページ作成プログラムによって自動的に評価される可能性があります。そのようなDPIの「ヒント」がない場合(または、LaTeXが期待する方法で何らかの形で自分自身を提示しない場合)、LaTeXは、ページ上の特定の画像を期待どおりにレンダリングするように命令される必要があります〜-画像の周りにもっと明示的なLaTeXコードが必要です!
他の画像形式(JPEG(?)、BMP、...)は、内部メタデータでのDPIヒントの保存さえサポートしていません。
そのため、Gimpはイメージを印刷するため、「Picture-> Printing Size」で表示される内容のみをサポートします。ImageMagickでは、印刷できません。
印刷するときは、Gimpでやりたいことをやり続けてください。ImageMagickでは意味がありません。
この追加のIMドキュメントスニペットも参照してください。これは、まったく同じトピックを異なる言葉で説明しています。
残っているのはこれです:
- Gimpで画像を「操作」し、その結果をLaTeXに埋め込むと、ページは期待どおりに見えます。
- ImageMagickで画像を「操作」し、その結果をLaTeXに埋め込んだ場合、ページは期待したようには見えません。
上記の問題を解決するには、以下を提供してください。
- ImageMagickインストールの正確なバージョン(
convert -version
およびの完全な出力convert -list configure
);
- (へのリンク)元のサンプル画像。
- (へのリンク)Gimpによって操作される同じ画像。
- (へのリンク)ImageMagickによって操作される同じ画像。
これにより、問題の解決に役立ちます。
ただし、これは現在の件名/見出しで求められている問題とは異なる問題です:「画像データの実際のバイトサイズを変更せずにImagemagickでDPIを変更したい」
更新
上で述べたことはまだ一部の読者には明らかではないので、ここでもう1つの試みがあります...
画像ファイル内で「解像度」または「密度」と記載されているものはすべて、メタデータ属性です。ファイルによって記述される実際のピクセルの数には影響がなく、この点ではまったく関係ありません。これは、画像を印刷、レンダリング、または表示するときに、印刷またはレンダリングデバイスまたはアプリケーションが従う場合と従わない場合がある単なるヒントです。
この目的のために、それは画像ファイル内に保存されているほんの数個の数字です。これらの数値は、プリンタなどの出力デバイスに通知し、1インチあたりの画像の表示ドット数(またはピクセル数)を表示します。PostScript、PDF、MWF、SVGなどのベクター形式の場合、画像で使用される現実世界の座標を描画するようピクセルスケールに指示します。
画像メタデータ内のImageMagickによって示された解像度値がアプリケーションによって尊重されない 1つの例は、Adobe Photoshopです。Photoshopは、希望する印刷または表示解像度に関するヒントを8bimという独自のプロファイルに保存します。ImageMagickは、解像度の変更を画像ファイルのメタデータに書き込むように求められた場合でも、このプロファイルには影響しません。一方、Photoshopは、独自の8bimプロファイルが表示されるとすぐに、この目的のために定義された標準のメタデータフィールドにImageMagickによって保存されたすべての解像度ヒントを無視します。
OPは見出しを選択する必要があります。
- 「画像の実際のピクセル数を変更せずに、ImageMagickでDPI(メタデータ解像度のヒント)を変更したい」
すべての誤解を避けるために...
^
彼の答えの左側にある小さなアイコンをクリックしてください)。 +15)...