当前位置: 首页 > 面试题库 >

用django调整图像大小?

蒲昊
2023-03-14
问题内容

我是Django(和Python)的新手,在尝试使用其他人的应用程序之前,我一直在尝试自己做一些事情。我在理解事物在Django(或Python)的执行方式中“适合”何处时遇到了麻烦。我要解决的问题是上传图片后如何调整图片大小。我已经很好地设置了模型并插入了admin,并且图像可以很好地上传到目录:

from django.db import models

# This is to list all the countries
# For starters though, this will be just United Kingdom (GB)
class Country(models.Model):
    name = models.CharField(max_length=120, help_text="Full name of country")
    code = models.CharField(max_length=2, help_text="This is the ISO 3166 2-letter country code (see: http://www.theodora.com/country_digraphs.html)")
    flag = models.ImageField(upload_to="images/uploaded/country/", max_length=150, help_text="The flag image of the country.", blank=True)

    class Meta:
        verbose_name_plural = "Countries"

    def __unicode__(self):
        return self.name

我现在遇到的麻烦是获取该文件并将新文件制作为缩略图。就像我说的那样,我想知道如何在不使用他人应用程序的情况下进行操作(目前)。我从DjangoSnippets获得了以下代码:

from PIL import Image
import os.path
import StringIO

def thumbnail(filename, size=(50, 50), output_filename=None):
    image = Image.open(filename)
    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')
    image = image.resize(size, Image.ANTIALIAS)

    # get the thumbnail data in memory.
    if not output_filename:
        output_filename = get_default_thumbnail_filename(filename)
    image.save(output_filename, image.format) 
    return output_filename

def thumbnail_string(buf, size=(50, 50)):
    f = StringIO.StringIO(buf)
    image = Image.open(f)
    if image.mode not in ('L', 'RGB'):
        image = image.convert('RGB')
    image = image.resize(size, Image.ANTIALIAS)
    o = StringIO.StringIO()
    image.save(o, "JPEG")
    return o.getvalue()

def get_default_thumbnail_filename(filename):
    path, ext = os.path.splitext(filename)
    return path + '.thumb.jpg'

…但是这最终使我感到困惑…因为我不知道它如何“适合”我的Django应用程序?确实,这是仅对成功上传的图像进行缩略图制作的最佳解决方案吗?谁能向我展示一种良好,扎实,体面的方式,让像我这样的初学者可以学会正确地做到这一点?就像在那儿一样,知道将这类代码放在哪里(models.py?forms.py?…),以及如何在上下文中工作?…我只需要一点帮助来理解和解决这个问题。

谢谢!


问题答案:

如果您觉得还可以,那么您已经准备好一个Django应用程序,按照您的要求进行操作:https : //github.com/sorl/sorl-thumbnail



 类似资料:
  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro

  • 问题内容: 我要在pdf文件中添加一个水印。水印是.bmp图像,并且是2290 x3026。尝试调整此图片的大小以适合页面时,我遇到很多麻烦,有人有什么建议吗? 这是方法的输出。 我会与你们共享pdf图片,但不幸的是我不能。 我应该尝试改用.jpg吗?我真的不知道iText如何处理不同的图像扩展名。 问题答案: 您可以使用另一种方法:“手动”调整图像大小(即通过图像处理软件),而不是通过iText

  • 我有一个水印,我想放在我的pdf中。水印是一个。bmp图像,为2290 x 3026。我在调整图片大小以适应页面时遇到了很多问题,有人有什么建议吗? 下面是方法的输出。 我想和你们分享pdf的图片,但不幸的是我不能。 我是否应该尝试使用。改为jpg?我真的不知道iText处理不同图像扩展的效果如何。

  • 问题内容: 我有一个快速的问题,我不太确定要进行设置。我在其他地方看到过示例,但没有什么比我的情况更具体。我想使用PHP调整图像的大小,以使图像易于阅​​读,而不仅仅是像使用HTML那样随意拉伸。如果它们的宽度不是250像素,也不是160像素,那么如何调整图片的大小,使其成比例但适合该空间? 谢谢! 问题答案: 好的,下面是我在商店中使用的Image对象。保持规模-需要GD 我在请求时调整图像的大

  • 问题内容: 我正在尝试调整缓冲图像的大小。我能够存储它并显示在jframe上没有问题,但是我似乎无法调整它的大小。关于如何更改它以使其正常运行并将图像显示为200 * 200文件的任何提示都很好 问题答案: 更新的答案 我不知道为什么我的原始答案有效,但是在单独的环境中对其进行了测试,我同意,原始的可接受答案不起作用(为什么我说过,我也不记得了)。另一方面,这确实起作用:

  • 问题内容: 我想拍摄一张图像并更改图像的比例,虽然它是一个numpy数组。 例如,我有一个可口可乐瓶的图像: bottle-1 转换为一个numpy的形状数组,我想调整其大小以表示第二个图像的大小: bottle-2 形状为。 如何在保持原始图像的同时将图像尺寸更改为特定形状?其他答案建议每隔一行或第三行剥离,但是我想要做的基本上是像通过图像编辑器(但在python代码中)那样收缩图像。是否有任何