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 web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/51ad87b9-80a4-4019-a54b-c54a2efb29ae%40googlegroups.com.