Thank you. I have just writed this code.
It works but I want to avoit to save 2 times with "super(book,
self).save()" ( see below ):


from django.db import models
from PIL import Image
import glob, os

thumb_size = 90, 90

class book(models.Model):
    title = models.CharField(max_length=200)
    photo = models.ImageField(upload_to='photo_book')
    thumb = models.ImageField(upload_to='thumb_book', blank=True,
null=True)



    def save(self):
        super(book, self).save()
        file_path = self.photo.url
        if (file_path):
            im = Image.open(file_path)
            im.thumbnail(thumb_size, Image.ANTIALIAS)
            root, immagin = os.path.split(file_path)
            immagin, ext = os.path.splitext(immagin)
            im.save("thumb_book/" + immagin + ".thumbnail.jpg",
"JPEG")
            self.thumb = "thumb_book/" + immagin + ".thumbnail.jpg"
        super(book, self).save()


--------------------

On Jan 4, 5:03 pm, Justin Myers <masterb...@gmail.com> wrote:
> I'm not able to test this idea directly myself at the moment, but it
> appears you're storing an absolute path (i.e., starting from the
> filesystem root) in self.thumb. I'm pretty sure FileFields (and, by
> extension, ImageFields) store relative paths from settings.MEDIA_ROOT.
>
> (To make sure I'm thinking about this properly (since again, I can't
> double-check this right now), you might want to see what the value of
> the thumb field is in the database first. If I'm right, you should see
> a path that consists of a relative path followed by an absolute one,
> such as "2010/0104//home/username/webapps/media/2010/0104/
> something.thumbnail.jpg".)
>
> An absolute path is certainly helpful for actually operating on the
> file, but before
>     self.thumb = imfile + ".thumbnail.jpg"
> you'll need something like
>     imfile, ext = os.path.splitext(self.photo)  # NOT .path, so this
> is a relative path, not an absolute one
> to make this work properly.
>
> Hope that helps.
> -Justin
>
> On Jan 4, 5:15 am, nameless <xsatelli...@gmail.com> wrote:
>
> > I have writed this code but it doesn't work. What is the error ?
>
> > from django.db import models
> > from django.forms import ModelForm
> > from PIL import Image
> > import glob, os
>
> > thumb_size = 90, 90
>
> > class book(models.Model):
> >     title = models.CharField(max_length=200)
> >     photo = models.ImageField(upload_to='bookphoto')
> >     thumb = models.ImageField(upload_to='bookthumb')
>
> >     def save(self):
>
> >         file_path = self.photo.path
> >         if (file_path):
> >             imfile, ext = os.path.splitext(file_path)
> >             im = Image.open(file_path)
> >             im.thumbnail(thumb_size, Image.ANTIALIAS)
> >             im.save(imfile + ".thumbnail.jpg", "JPEG")
> >             self.thumb = imfile + ".thumbnail.jpg"
> >         super(book, self).save()
>
> > class BookForm(ModelForm):
>
> >     class Meta:
> >         model = book
> >         exclude = ('thumb',)
>
> > Please help me, I am going crazy :-\
>
> > --------------
>
> > On Jan 2, 5:17 pm, Xia Kai(夏恺) <xia...@gmail.com> wrote:
>
> > > Hi,
>
> > > This is a fantastic app, though it might be too fat for a minimalist like
> > > me.   ^_^
>
> > > I would recommend override the default save method of the model and resize
> > > the original photo using PIL. For the overriding part, you could consult 
> > > the
> > > documentation:http://docs.djangoproject.com/en/dev/topics/db/models/#overriding-pre...
>
> > > ------------------------
> > > Xia Kai(夏恺)
> > > xia...@gmail.comhttp://blog.xiaket.org
>
> > > --------------------------------------------------
> > > From: "Chris Moffitt" <ch...@moffitts.net>
> > > Sent: Saturday, January 02, 2010 11:59 PM
> > > To: <django-users@googlegroups.com>
> > > Subject: Re: Photo + thumbnail
>
> > > > You'll probably want to use one of Django's thumbnail apps. Here's the 
> > > > one
> > > > I
> > > > recommend:
> > > >http://code.google.com/p/sorl-thumbnail/*
>
> > > > -*Chris
>
> > > > On Sat, Jan 2, 2010 at 9:48 AM, nameless <xsatelli...@gmail.com> wrote:
>
> > > >> Hi everyone I have a simple question.
> > > >> This is my model:
>
> > > >> class book(models.Model):
> > > >>    title = models.CharField(max_length=50)
> > > >>    photo = models.ImageField(upload_to='images/avatar/')
> > > >>    thumb = models.ImageField(upload_to='images/thumb/')
>
> > > >> I want in photo original photo and in thumb the same photo but
> > > >> resized.
> > > >> How do I do that in simplest way ?
>
> > > >> Thank you and Good year  ^_^

--

You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.


Reply via email to