On Sunday, August 25, 2019 at 5:27:34 AM UTC-7, Rahul wrote:
>
> Hi All,
> I have an issue with the following code which I ain't able to
> trace. The code is for uploading images, generating the thumbnails
> ,watermarking the image and saving the watermarked thumbnail to a path on
> the system. While this is working fine on windows system, it *fails
> *miserably
> on linux system. On debian system it does not save the file name as the
> record name and it saves it with an incremental valued name.
>
> For example if the thumbnail should be 114.thumbnail.jpg on the system it
> saves as 91.thumbnail.jpg or such name. Note that there is a gap in naming
> for example there are a few files with names 88.thumbnail.jpg then
> 90.thumbnail.jpg .. and then 112.thumbnail.jpg. Basically the records ID
> value appended with .thumbnail.jpg. When a new image is uploaded it should
> ideally start from 115.thumbnail.jpg as that is the value that is generated
> and saved in the database. but it takes other value instead when saving the
> file on the disk may be (if 90.thumnail.. exists already) it will save it
> as 91.thumbnail.jpg
>
> CODE BELOW -
>
>
> if form.accepts(request.vars,session):
> recordsID= form.vars.id
> import platform
> is_windows=(platform.system().lower().find("win") > -1)
> is_linux=(platform.system().lower().find("lin") > -1)
> is_mac=(platform.system().lower().find("mac") > -1)
>
> if (is_windows == True):
> #print "is windows"
>
> foto_path = (request.folder + "static\\user_uploads\\" +
> upload_pic)
> infile = foto_path
> thumbnail_filename = ("%s" % recordsID + ".thumbnail.jpg")
> outfile = (request.folder + "static\\thumbs\\" +
> thumbnail_filename )
> thumbpath = os.path.join(request.folder, 'static', 'thumbs\\')
> + thumbnail_filename
>
> elif (is_linux == True):
> #print "is linux"
>
> foto_path = (request.folder + "static/user_uploads/" +
> upload_pic)
> infile = foto_path
> thumbnail_filename = ("%s" % recordsID + ".thumbnail.jpg")
>
> #outfile = (request.folder + "static/thumbs/" +
> thumbnail_filename )
> thumbpath = os.path.join(request.folder, 'static', 'thumbs/')
> + thumbnail_filename
> outfile = (thumbpath) ## Changed on AUG 25
>
> db(db.fotoz.id==recordsID).update(imgthumb=thumbnail_filename,
> imgthumbpath=thumbpath) ##outfile
> if infile != outfile:
> try:
> im = Image.open(infile)
> im.thumbnail(size)
> #Check for image format
> image_format = (im.format)
> #print ("Image format: ", image_format)
>
> ### ================ Watermark stuff
> ======================
>
> width, height = im.size
> draw = ImageDraw.Draw(im)
>
> watermark_text = "WATERMARK"
> watermark_font = ImageFont.truetype('arial.ttf', 20)
> textwidth, textheight = draw.textsize(watermark_text,
> watermark_font)
> # calculate the x,y coordinates of the text
> margin = 5
> x = width - textwidth - margin
> y = height - textheight - margin
>
> # draw watermark in the bottom right corner
> ## Specify this to fill font with red color ,
> fill=(128,0,0,128)) OR #, fill=shadowcolor) OR fill="red" or
> fill="#ff0000" -- work
> draw.text((x, y), watermark_text, font=watermark_font,
> opacity=0.25)
>
> ## --- Watermark text ends ---
>
> #Process various image formats for making thumbnails.
> Currently supporting JPG/JPEG, GIF and PNG
> if (image_format == "JPEG"):
> im.save(outfile, "JPEG")
> if (image_format == "GIF"):
> im.save(outfile, "GIF")
> if (image_format == "PNG"):
> im.save(outfile, "PNG")
> except IOError:
> print("Cannot create thumbnail (un-recognized format) for
> ", infile)
> pass
>
> If any one has any idea please suggest -
>
> Regards,
>
> Rahul
>
At the moment, I think I need to read through it a couple more times, but
it seems rather perverse to be using os.path.join() and then using
os-specific filename separators, when the whole point of os.path.join() is
to not have to do that. (And then you do string cats for foto_path, instead
of using os.path.join() there.)
Where is upload_pic defined? Why does outfile's assignment have '(' and
')'? You want it to be a one-tuple? Ditto thumbnail_filename?
When you create thumbpath, why do you append thumbfile to the path you've
assembled with os.path.join() instead of including it in the args?
/dps
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/51ad87b9-80a4-4019-a54b-c54a2efb29ae%40googlegroups.com.