検索

ホームページ  >  に質問  >  本文

Pythonでアップロード後に画像サイズを圧縮する方法

私は flask フレームワークを使用し、画像処理には pillow を使用します。

通常、アップロードはループ files で行われ、次に 1 つずつ file.save()
save# の後に を実行したいと考えています。 ## が完成しました。 枕 の圧縮ロジック。

ただし、

save は I/O 操作であるため遅延があるようです。file.save() の直下で pillow が呼び出された場合 #Image .openでは画像データが書き込まれていないためエラーとなります。 ###何をするか?

PHPzPHPz2757日前763

全員に返信(3)返信します

  • 習慣沉默

    習慣沉默2017-05-18 10:54:27

    リーリー

    保存操作が非同期ではないことがわかります


    アップデート

    copyfileobj はブロック操作です

    https://github.com/pallets/we...

    返事
    0
  • 阿神

    阿神2017-05-18 10:54:27

    実際、このタイプの画像処理には、Alibaba Cloud の OSS や Qiniu などの同様のストレージ機能を直接使用して、画像を OOS に直接アップロードし、指定された画像処理のために特別なサフィックスを呼び出すことをお勧めします。アドレスを処理するために OSS にもアクセスします。これにより、独自のサーバーを使用して画像を処理する負荷が回避されるだけでなく、アクセスのプレッシャーも軽減され、プログラムの複雑さを軽減するのにも非常に役立ちます。

    返事
    0
  • 某草草

    某草草2017-05-18 10:54:27

    Image.open の fp パラメータを見てください。ファイル名 (文字列)、pathlib.Path オブジェクト、またはファイル オブジェクト PIL.Image.open(fp, mode='r') も使用できます。

    ファイルを Image.open(file) に直接渡すだけです!

    リーリー

    返事
    0
  • キャンセル返事