0

Python用のWand(imagemagick)を使用して画像のサムネイル(250x250px)を作成したいと思います。

imagecopyresampled()可能であれば、結果が PHP の**関数と同様になり、品質が低下しないようにしたいと考えています。

私のディレクトリ構造は次のとおりです。

> main folder (level 1) -> only one

>> company folder (level 2 - inside main folder) -> 286 company folders

>>> product folder (level 2 - inside each company folder)
>>> property folders (level 2 - inside each company folder) -> number depending on number of properties that each company owns

>>>> imagename.jpg (level 3 - inside each property folder) -> number depending on number of images.
>>>> imagename_thumb.jpg (level 3 - inside each property folder) -> old, smaller thumbs, one for every original image in folder. These should be deleted/replaced with new ones.

今私が達成したいのは、古いimagename_thumb.jpg画像を新しいものに置き換えて、すべてのimagename.jpg画像のサムネイルを(前述のように)作成することです。

注意してください: 製品フォルダ内にもいくつかの画像がありますが、これらのサムネイルを作成したくないので、ファイルをループするときにこのフォルダを回避することは可能ですか?

理由: 最近、より大きなサムネイル画像を使用するオンライン アプリを再設計することにしました。既存の小さなサムネイルをすべて手動で置き換えることはほとんど不可能です。


**imagecopyresampled()どのような種類の親指を達成したいのかをよりよく理解するための機能(クロップ、リサンプル)の説明:

imagecopyresampled() は、ある画像の長方形の部分を別の画像にコピーし、ピクセル値を滑らかに補間します。これにより、特に画像のサイズを小さくしても鮮明さが維持されます。

つまり、imagecopyresampled() は、幅 src_w、高さ src_h の位置 (src_x,src_y) の src_image から長方形領域を取得し、位置 (dst_x,dst_y) の幅 dst_w、高さ dst_h の dst_image の長方形領域に配置します。

ソースと宛先の座標と幅と高さが異なる場合、画像フラグメントの適切な伸縮が実行されます。座標は左上隅を参照します。この関数は、同じイメージ内の領域をコピーするために使用できますが (dst_image が src_image と同じ場合)、領域が重なっている場合、結果は予測できなくなります。

4

1 に答える 1

1

スーパーユーザーの同じ質問に対する私の回答から再投稿しました。(明らかに Wand の使用を決定する前に。そのため、適切な Wand 呼び出しに変換するサブプロセス呼び出しを交換する必要があります。)

import os
import subprocess

for root, dirs, files in os.walk('company 3\company 3 property'):
    images = [os.path.join(root, f) for f in files if f.endswith('.jpg') and not '_thumb' in f]
    for f in images:
        outbase = f[:-4] # simply remove '.jpg'
        out = outbase += '_thumb.jpg'
        args = ['convert', f, '-scale', '250x250', out]
        subprocess.call(args)
于 2013-08-25T16:25:35.493 に答える