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.

Reply via email to