在Django中保存缩略图图像路径的解决方法主要涉及到以下几个步骤:
pip install pillow
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
from django.db import models
class MyModel(models.Model):
image = models.ImageField(upload_to='thumbnails')
from PIL import Image
from django.conf import settings
def generate_thumbnail(image_path):
image = Image.open(image_path)
thumbnail_size = (100, 100) # 设置缩略图尺寸
image.thumbnail(thumbnail_size)
thumbnail_path = image_path.replace(settings.MEDIA_ROOT, settings.MEDIA_ROOT + '/thumbnails')
thumbnail_path = thumbnail_path.replace('.jpg', '_thumbnail.jpg') # 修改缩略图文件名
thumbnail_folder = os.path.dirname(thumbnail_path)
if not os.path.exists(thumbnail_folder):
os.makedirs(thumbnail_folder)
image.save(thumbnail_path)
return thumbnail_path
from django.shortcuts import render, redirect
from .models import MyModel
def upload_image(request):
if request.method == 'POST':
image = request.FILES['image']
mymodel = MyModel(image=image)
mymodel.save()
thumbnail_path = generate_thumbnail(mymodel.image.path) # 生成缩略图并保存
mymodel.thumbnail = thumbnail_path.replace(settings.MEDIA_ROOT, '')
mymodel.save()
return redirect('image_detail', pk=mymodel.pk)
return render(request, 'upload_image.html')
通过上述步骤,你可以成功保存缩略图图像路径,并将其与原始图像关联起来。