2010-12-07 25 views
9

私はdeepzoom.pyと呼ばれるpythonスクリプトを使用して、大規模なオーバーヘッドレンダリング(1GP以上)をDeep Zoom画像フォーマット(Googleマップ - エスケープタイルフォーマット)に変換しようとしていますが、残念ながらPILメモリの制限のために通常クラッシュすることになります。作成者はVIPSを掘り下げていると言いましたが、nip2(VIPSのGUIフロントエンド)でも画像を開くことができません。他の人が別の質問をしても(同じトピックでも)、誰かがOpenImageIOのように見えますが、Pythonラッパーがありますが、適切なバイナリがなく、Windowsでコンパイルしようとすると悪夢。Pythonで巨大な(潜在的に30000x30000以上の)画像を扱う?

私が使用できるPython用の代替ライブラリはありますか?私はPythonMagickWand(ImageMagickのラッパー)とPythonMagick(GraphicsMagickのラッパー)を試しましたが、それらの両方ともメモリの問題に遭遇しました。

+0

LinuxをOpenImageIOで使用することを止めてはどうですか?小型の外付けハードドライブを入手して(または使用していない内蔵ドライブ)インストールします。私はあなたのシステム仕様が仕事に頼っているとも信じています。小さな画像に分割して変換することもできます。 –

+0

これまでの試みでは失敗しましたが、正しく設定することはあまりありませんでした。たぶんこれはばかげて聞こえるかもしれませんが、私はWindows上でスクリプトを実行しようとすると互換性がないと想定しました。 – Nicolas

答えて

1

GISソリューションがより適切に聞こえるように、地理参照された画像などを使用しようとしているようです。私はGDALを使用します。これは優れたライブラリであり、使いやすいPythonバインディングがSwig経由で提供されています。

Windowsでは、インストールする最も簡単な方法はFrank WarmerdamのFWToolsパッケージです。

+0

それは完璧です。プラスであるピラミッド作成ツールも組み込んでいるようです。乾杯! – Nicolas

+0

うーん、明らかにそうではありません。 GDALはlibjpegに依存しています。libjpegは画像を開こうとすると「メモリ不足」を返します。多分私は何とかそれを行うことができる前に(何とか)それを生のフォーマットに変換する必要があります。私はLinux VM上でコンパイルしようとし、それがどうなるか見てみよう。 – Nicolas

+0

@Nicolas:うーん...私はGDALが大きすぎてメモリに収まらない画像で作業できることを知っています。私はJPEGドライバを広範囲に使用していないので、それについてコメントすることはできませんが、未加工のフォーマットで成功すると期待します。 –

0

部分負荷は有用ですか? PILを使用し、画像フォーマットが.BMPの場合、画像ファイルをロードしないで画像ファイルを開き()、次にcrop()を実行してからロードすることができます。画像ファイルは実際にロードされますあなたが作物で選択したものです。おそらくTGA、JPG、PNGやその他のフォーマットではあまり効果的ではないでしょうか。

2

私は非常によく似た問題を抱えていましたが、Windows上でうまく動作するnetpbmを使って解決しました。 Netpbmは巨大な.pngファイルを変換し、スライス、クロッピング、再結合(pamcrop、pamdice、およびpamundiceを使用)と、多くのメモリーをまったく使用せずに.pngに変換することに問題はありませんでした。私は、アプリケーションに必要なnetpbmバイナリとdllを含め、それらをpythonから呼び出しました。

1

最新のlibvips 7.32には、どんなサイズの画像でも動作できる非常に高速のDeepZoomクリエイターが付属しています。試してみてください:

$ vips dzsave huge.tif mydz 

mydz_filesにタイルを書いても、あなたのためのmydz.dzi infoファイルを書き込みます。

dzsaveの紹介については、this blog postを参照してください。

関連する問題