PNGファイルのDPIを変更する方法 (ImageMagickなしのコマンドライン)


9

PNG画像ファイルのDPIを変更する方法を探しています。ImageMagickを使用すると、これは簡単です。

$ convert -density 150 -units pixelsperinch file.png file.png

問題は、ImageMagickがインストールされていない複数のVMで実行しているアプリケーションからこのコマンドを実行することです。アップグレードパッケージをこれらのVMにプッシュできますが、ImageMagickの場合、約30MBがアップグレードバンドルに追加されます。これは、私のユースケースには少なすぎます。

長い話:小さな(パッケージサイズのような)コマンドラインツールを使用してPNGファイルのDPIを変更する方法はありますか?

オプションで、生の画像ファイルのバイトを変更しても、誰かがそれらを探す場所を知っている場合は問題ありません...


独自の実装を検討することもできます。PNGチャンクの操作は簡単です。それらすべてに特定のDPIを1つだけ適用する場合は、チェックサム機能を使用する必要さえありませんpHYs。Photoshopで作成されたPNGから既製のチャンクをコピーするだけです。
Zdenek 2017

回答:


6

2.10 MBで十分ですか?はいの場合、NConvertと次のようなバッチコマンドを使用します。

nconvert -out png -dpi 150 -keepdocsize -keepfiledate mysource.png

NConvertとは何ですか?

XnViewはGUIベースのアプリケーションであり、グラフィカルユーザーインターフェイスを使用して画像を変更および操作できます。NConvertはXnViewとほぼ同じ機能を備えていますが、コマンドラインツールであり、グラフィカルユーザーインターフェイスはありません。NConvertをバッチスクリプトで使用するか、別のアプリケーションで呼び出すことができます。

便利なリンク

  • 開始するためのいくつかの例を含む初心者ガイドウィキ
  • 使用可能なコマンドラインパラメータを確認するためのヘルプファイル(ペーストビンにアップロード)
  • Nconvertを使用したグラフィカルなフロントエンドはXnConvertです。これを使用して、Nconvertバッチファイルを作成およびエクスポートします。
  • XnconvertおよびNconvert forのフォーラム

ありがとう、見栄えがよく、おそらく将来的に重宝するでしょう!この場合、PNG形式(幸いにも十分簡単でした)を調べ、小さなカスタムアプリ(PHPで15行)を使用して画像を変更することになりました。
johndodo 2013

@johndodoおもしろそうですね。アプリケーションを私たちと共有したいですか?
nixda 2013

残念ながら私は自由にそれを行うことはできませんが、PNGファイル形式の(素晴らしい!)仕様を読み取り、pHYsチャンクを変更するアプリを作成することで同じことを行うことができます。何をしているのかがわかれば、それは本当に簡単です。
johndodo 2013年

1

「アプリケーションから」このコマンドを実行するとのことですが、このため、このアプリケーションを作成したか、または維持していると思います。そうは言っても、いくつかの言語用のImageMagick APIがあり、それらの1つを使用して既存のプログラムに機能を追加できます。パッケージサイズの増加は、アプリケーションが記述されている言語と、ライブラリを静的にリンクするか動的にリンクするかによって異なりますが、30 MBの増加よりも大幅に小さいと思います。

別のオプションは、ImageMagickパッケージ全体を含めないことです。ImageMagick Zipファイル(わずか13 MB BTW)をダウンロードして、convertツールとその依存関係のみを抽出し、VMに配布できます。ツールの依存関係を判断するために使用できるDependency Walkerというconvertツールがあります。


1

netpbm pnmtopngプログラムで-sizeフラグを使用します。使用される単位はメートルあたりのピクセルです。次の例では、newfile.pngを300dpiに設定します。

pngtopnm <oldfile.png | pnmtopng -size='11811 11811 1' >newfile.png

0

まあ、あなたは潜在的にPythonスクリプトを使うことができました。

#!/usr/bin/python
im = Image.open("in.png")
nx, ny = im.size
im2 = im.resize((int(nx*1.5), int(ny*1.5)), Image.BICUBIC)
im2.save("out.png")

ソース


Python 3.3.2インストーラー(ソースコードを含まない)は19.3 MB、Python 2.7.5インストーラーは15.5 MBです。
Drew Chapin 2013

5
画像のサイズが変更され、DPIは変更されません。
ボビー

0

このための適切なImage Magick "convert"コマンドラインは、-resample引数を使用することです。

convert image.png -resample 150x150 -units pixelsperinch ../ImagesAdjusted/image.png
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.