Django プロジェクトで画像のアップロードを操作する場合、アップロードされた画像が (正方形ではなく) 長方形であることを確認するなど、特定の寸法を強制する必要がある場合があります。これは、プロファイル ヘッダー、バナー、または非正方形フォーマットを必要とするメディアに特に役立ちます。
この記事では、Django の検証システムと Pillow ライブラリを使用した簡単なソリューションについて説明します。
ソリューションを実装する前に、次の依存関係がインストールされていることを確認してください:
Pillow がインストールされていない場合は、次の方法で追加できます。
python -m pip install pillow
アップロードされた画像が長方形であるかどうかを検証するには、画像の幅と高さをチェックする必要があります。両方の寸法が等しい場合、画像が正方形であることを意味し、検証エラーが発生します。
カスタムバリデーターのコードは次のとおりです:
from django.core.exceptions import ValidationError from PIL import Image def validate_rectangular_image(image): """ Validator to ensure an uploaded image is rectangular and not square. """ image = Image.open(image) # Open the uploaded image using Pillow width, height = image.size # Extract dimensions if width == height: # Check if image is square raise ValidationError("Uploaded image must be rectangular (not square).") return image
Django アプリケーションでこのバリデータを使用するには、モデル フィールドに追加できます。たとえば、ユーザー プロフィール バナーのモデルに ImageField があると仮定します。
from django.db import models from .validators import validate_rectangular_image # Import the custom validator class Profile(models.Model): name = models.CharField(max_length=100) banner_image = models.ImageField( upload_to='banners/', validators=[validate_rectangular_image], help_text="Please upload a rectangular image for the banner." ) def __str__(self): return self.name
画像のアップロードに Django フォームを使用している場合、ユーザーが無効な画像を送信すると、エラーが表示されます。
たとえば、単純なフォームは次のようになります:
from django import forms from .models import Profile class ProfileForm(forms.ModelForm): class Meta: model = Profile fields = ['name', 'banner_image']
ユーザーが正方形の画像をアップロードすると、次のエラー メッセージが表示されます。
「アップロードされる画像は長方形である必要があります (正方形ではありません)。」
正方形と長方形の両方の画像をアップロードして機能をテストできます。
正方形の画像 (例: 300x300):
バリデーターはファイルを拒否し、ValidationError を発生させます。
長方形画像 (例: 400x300):
バリデーターはファイルを受け入れ、画像は正常にアップロードされます。
このアプローチを使用すると、Django アプリケーションで画像の寸法要件をシームレスに強制できます。 Pillow ライブラリを使用すると、画像サイズの操作が簡単になり、Django の検証システムを使用すると、あまり手間をかけずにカスタム ロジックを統合できます。
Django と Pillow を組み合わせることで、Web アプリケーションの品質を向上させる強力で柔軟な画像アップロード ルールを作成できます。
コーディングを楽しんでください! ?
以上がPython を使用して Django で長方形の画像を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。