枕头问题:在同一图像上书写 - >保存每个模型的随机名称的图像



我有个问题。是否可以从一个图像中保存具有其他唯一名称的图像。

我得到了一个默认的图像,它位于invitation/defaut.png中。

我使用的表单只有一个字段专用于nom

我想保存这张图片,用笔名,用不同的名字。

例如:

如果name louis=>defaut_randomletters.png

如果name mike=>defaut_randomletters.png

我面临的问题是,所有的文字都保存在同一张图片上。

class Invitation(models.Model):
nom = models.CharField(max_length=200)
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='invitation_user')
image = models.ImageField(upload_to='invitation/', default='invitation/defaut.png')
slug = models.SlugField(max_length=200, editable=False, unique=True)

def save(self, *args, **kwargs):
if not self.slug:
self.slug = self.nom

super(Invitation, self).save(*args, **kwargs)
#self.image.path = self.image.path.rsplit("/", 1)[0] + "/defaut_randomletters.png"
img = Image.open(os.path.join(settings.BASE_DIR, self.image.path))
#img = Image.open(self.image.path)
draw = ImageDraw.Draw(img)
path_to_media_popstick = os.path.join(settings.BASE_DIR, 'media/font/gillsans.ttf')
path_to_media_emo = os.path.join(settings.BASE_DIR, 'media/font/Symbola.ttf')
#fnt = ImageFont.truetype(path_to_media_emo, 50)
fnt = ImageFont.truetype(path_to_media_emo, size=50, layout_engine=ImageFont.LAYOUT_RAQM)
font = ImageFont.truetype(path_to_media_popstick, 200)
draw.text((50, 200),self.nom,(255,255,255),font=font)

img.save(self.image.path + secrets.token_urlsafe(12) + ".png")

super(Invitation, self).save(*args, **kwargs)

编辑:

我试过多种方法。多亏了这种方式,我可以创建一个新名称(img.save(self.image.path + secrets.token_urlsafe(12) + ".png"(的新图像。它正确地保存在正确的文件夹中,但这与模型无关。

例如,如果我创建Nico,这将创建一个新的图像defaut.pngIZ29GUoOPVF6Q4e.png->但在型号上我会有:

图片元素:invitation/defat.png(defaut.pnggIZ29GUoOPVF6Q4e.png未链接到我刚刚创建的模型(

因为您正在将图像写入同一路径self.image.path。更新路径的文件名部分,如

self.image.path = self.image.path.rsplit("/", 1)[0] + "/defaut_randomletters.png"

并且CCD_ 5也将更新后的CCD_。

最新更新