ホームページ >バックエンド開発 >Python チュートリアル >Python で画像を水平方向に連結する方法: クイックガイド
Python を使用して画像を水平方向に連結する
この記事は、Python を使用して複数の JPEG 画像を水平方向に結合するという課題に取り組むことを目的としています。
問題ステートメント
それぞれの寸法が 148 x 95 の 3 つの画像を水平方向に結合して 1 つの画像を形成する必要があるシナリオを考えてみましょう。次のコードを使用した以前の試みで問題が発生しました:
<code class="python">import sys from PIL import Image list_im = ['Test1.jpg','Test2.jpg','Test3.jpg'] new_im = Image.new('RGB', (444,95)) for elem in list_im: for i in xrange(0,444,95): im=Image.open(elem) new_im.paste(im, (i,0)) new_im.save('test.jpg')</code>
提案された解決策
問題に対処するために、改善されたコードが以下に提供されています:
<code class="python">import sys from PIL import Image images = [Image.open(x) for x in ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']] widths, heights = zip(*(i.size for i in images)) total_width = sum(widths) max_height = max(heights) new_im = Image.new('RGB', (total_width, max_height)) x_offset = 0 for im in images: new_im.paste(im, (x_offset,0)) x_offset += im.size[0] new_im.save('test.jpg')</code>
この解決策には次の重要な修正が含まれています:
画像の寸法のハードコーディングを回避し、単一行で寸法を指定するための規定 (両方とも追加情報に記載) は、改良されたコードに固有のものです。
説明
更新されたコードは、最初にすべての入力画像の幅と高さを計算し、これらの値を使用して出力画像の合計幅と最大高さを決定します。
次に、計算された寸法で空の画像を作成します。
次に、各入力画像を反復処理し、空の画像の適切な X オフセット (0 から開始) にそれぞれを貼り付け、貼り付けるたびに X オフセットをインクリメントして次の画像に道を譲ります。
最後に、結合された画像が指定したファイル名で保存されます。
以上がPython で画像を水平方向に連結する方法: クイックガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。