On Friday, August 30, 2019 at 11:42:37 AM UTC-7, Rahul wrote: > > > Hi Dave and Everyone, > I followed your advice -- Thanks for the code cleanup - However > the issues still exist > > *ISSUE*#1 - The photo is still being saved in > [E:\web2py_src\web2py\applications\*artpicstatic*\user_uploads] > Correct path where it should be saved is [infile: > E:\web2py_src\web2py\applications\artpic\static\user_uploads\] > I simply do not understand why the application is saving the file in above > path and not in the correct path in green. We have removed the problem > causing code [foto_path = (request.folder + "static/user_uploads/" + > upload_pic) ] from this method so where is it pulling it from and saving > the files to this location only. Where is this magic happening from? Is it > web2py >
I think it is time to see the declaration of db.fotoz. /dps > *ISSUE*#2 - As the application cannot find the file in the correct path > mentioned above it fails to create a thumbnail for it > > > > UPDATED CODE listing > > > form = SOLIDFORM(db.fotoz , fields=fields, submit_button='Upload Foto') > > #if form.accepts(request.vars, session): > if form.process().accepted: > upload_pic = form.vars.upload_photo > recordsID= form.vars.id > #Thumbnail code > print ("----------------") > infile = os.path.join(request.folder, "static", "user_uploads", > upload_pic) > print "infile: " , infile > > thumbnail_filename = "%s.thumbnail.jpg" % recordsID > print "thumbnail_filename: ", thumbnail_filename > > thumbpath = outfile = os.path.join(request.folder, "static", > "thumbs" , thumbnail_filename) > print "thumbpath and outfile: ", outfile > > #Insert thumbnail and thumbnail path in db imgthumb field. > 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 > ====================== > > ## Watermark Text -- > width, height = im.size > draw = ImageDraw.Draw(im) > > > watermark_text = "WATER" > 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 == "JPG"): > im.save(outfile, "JPG") > 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 > > response.flash='Photo uploaded' > > > > > *OUTPUT *- Path output for above code --* NOTE The infile must be saved > in the path mentioned below but it does not exist there. * > ---------------- > infile: > E:\web2py_src\web2py\applications\artpic\static\user_uploads\fotoz.upload_photo.bf976468faa81f30.3030372e4a5047.JPG > thumbnail_filename: 99.thumbnail.jpg > thumbpath and outfile: > E:\web2py_src\web2py\applications\artpic\static\thumbs\99.thumbnail.jpg > Cannot create thumbnail (un-recognized format) for: > E:\web2py_src\web2py\applications\artpic\static\user_uploads\fotoz.upload_photo.bf976468faa81f30.3030372e4a5047.JPG > > Regards, > > Rahul > > > > > > On Friday, August 30, 2019 at 1:42:44 AM UTC+5:30, Dave S wrote: >> >> >> >> On Thursday, August 29, 2019 at 12:21:41 PM UTC-7, Rahul wrote: >>> >>> Hi Val and Dave, >>> >>> Have a look at the code below - the line foto_path=... below works but >>> it uploads the photos to "web2py\applications\artpicstatic\user_uploads" >>> folder instead of web2py\applications\artpic\static\user_uploads folder. It >>> also generates the thumbnail file. Now if I use *foto_path = >>> os.path.join(request.folder + "static/user_uploads/" + upload_pic)* it >>> shows the right path after normalization but does not upload the photo at >>> all. And since it does not upload the photo the rest of the code fails to >>> generate thumbnails etc and throws this error . m using windows 10 with >>> python 2.7.13 >>> >>> - <type 'exceptions.IOError'> [Errno 2] No such file or directory: >>> 'E:\\web2py_src\\web2py\\applications\\artpic\\static\\user_uploads\\fotoz.upload_photo.82bfeee5a1affabd.3033372e4a5047.JPG' >>> >>> CODE: >>> ------- >>> #foto_path = (request.folder + "static/user_uploads/" + >>> upload_pic) >>> print ("----------------") >>> foto_path = (request.folder + "static/user_uploads/" + >>> upload_pic) >>> >> >> Bzzt. Concantenating different parts of the path is tetchy. I'd use >> os.path.join() ALWAYS, and let it provide the separators. You missed one, >> it seems. >> >> /dps >> >> >> print "Foto Path: ", foto_path >>> >>> normal_foto_path = os.path.normpath(foto_path) >>> print "Normal Foto Path: ", normal_foto_path >>> >>> infile = normal_foto_path >>> print "infile: " , infile >>> >>> thumbnail_filename = ("%s" % recordsID + ".thumbnail.jpg") >>> print "thumbnail_filename :", thumbnail_filename >>> >>> outfile_path = os.path.join(request.folder, "static/thumbs/" + >>> thumbnail_filename) >>> print "outfile_path: ", outfile_path >>> >>> normal_outfile_path = os.path.normpath(outfile_path) >>> print "normal_outfile_path ", normal_outfile_path >>> >>> outfile = normal_outfile_path >>> print "outfile: ", outfile >>> ----------- >>> OUTPUT ITERATIONS: >>> >>> [1] >>> >>> Foto Path: >>> E:\web2py_src\web2py\applications\artpicstatic/user_uploads/fotoz.upload_photo.8c9837615e4fa932.3035382e4a5047.JPG >>> Normal Foto Path: >>> E:\web2py_src\web2py\applications\artpicstatic\user_uploads\fotoz.upload_photo.8c9837615e4fa932.3035382e4a5047.JPG >>> infile: >>> E:\web2py_src\web2py\applications\artpicstatic\user_uploads\fotoz.upload_photo.8c9837615e4fa932.3035382e4a5047.JPG >>> thumbnail_filename : 64.thumbnail.jpg >>> outfile: >>> E:\web2py_src\web2py\applications\artpic\static\thumbs\64.thumbnail.jpg >>> ---------------- >>> [2] >>> >>> Foto Path: >>> E:\web2py_src\web2py\applications\artpicstatic/user_uploads/fotoz.upload_photo.838dbfb13f66470d.3030312e4a5047.JPG >>> Normal Foto Path: >>> E:\web2py_src\web2py\applications\artpicstatic\user_uploads\fotoz.upload_photo.838dbfb13f66470d.3030312e4a5047.JPG >>> infile: >>> E:\web2py_src\web2py\applications\artpicstatic\user_uploads\fotoz.upload_photo.838dbfb13f66470d.3030312e4a5047.JPG >>> thumbnail_filename : 65.thumbnail.jpg >>> outfile_path: >>> E:\web2py_src\web2py\applications\artpic\static/thumbs/65.thumbnail.jpg >>> normal_outfile_path >>> E:\web2py_src\web2py\applications\artpic\static\thumbs\65.thumbnail.jpg >>> outfile: >>> E:\web2py_src\web2py\applications\artpic\static\thumbs\65.thumbnail.jpg >>> >>> ------------ >>> [3] >>> >>> infile: >>> E:\web2py_src\web2py\applications\artpicstatic\user_uploads\fotoz.upload_photo.862f9808c7622ca7.3033372e4a5047.JPG >>> thumbnail_filename: 79.thumbnail.jpg >>> outfile: >>> E:\web2py_src\web2py\applications\artpic\static\thumbs\79.thumbnail.jpg >>> thumbpath: >>> E:\web2py_src\web2py\applications\artpic\static\thumbs\79.thumbnail.jpg >>> Cannot create thumbnail (un-recognized format) for: >>> E:\web2py_src\web2py\applications\artpicstatic\user_uploads\fotoz.upload_photo.862f9808c7622ca7.3033372e4a5047.JPG >>> >>> >>> SCREENSHOT >>> >>> >>> >>> >>> CODELISTING IS ATTACHED >>> >>> Looks like a simple answer but feels like my code is badly written... >>> >>> Regards, >>> >>> Rahul >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> On Thursday, August 29, 2019 at 2:17:49 AM UTC+5:30, Val K wrote: >>>> >>>> It is no need to use different code for win/linux, since it is Python! >>>> There is os.path.normpath(your_path) that does all stuff with slashes, >>>> I have app that works on both platforms just fine (without platform >>>> checking at all) >>>> My way - always use '/' in path, and at the end of all manipulations >>>> performs normalisation: path = os.path.normpath(path) >>>> And keep in mind that os.path.join() also works with filenames, so you >>>> can just os.path.join('foo', 'bar', 'baz.thumbnail.jpg') >>>> >>>> >>>> >>>> On Wednesday, August 28, 2019 at 9:05:11 PM UTC+3, Rahul wrote: >>>>> >>>>> Hi Dave, >>>>> >>>>> upload_pic is the form variable that user specifies for uploading the >>>>> file from local disk. Basically it is the filename. I removed the braces >>>>> for >>>>> outfile = (thumbpath) >>>>> but this is still not working. Any more suggestions ? >>>>> >>>>> >>>>> Regards >>>>> Rahul >>>>> >>>>> On Tuesday, August 27, 2019 at 2:21:45 PM UTC+5:30, Rahul wrote: >>>>>> >>>>>> Hey Dave, >>>>>> I was facing issues with path storage in a db field so I >>>>>> started using this method. I dont need outfiles curly braces will >>>>>> revisit >>>>>> the code today if possible and get back with the details. This is my >>>>>> modified code, previous one was straight forward and streamlined code >>>>>> and >>>>>> was using simple code.Thanks for the questions I’ll try getting in >>>>>> details. >>>>>> >>>>>> Regards, >>>>>> >>>>>> Rahul >>>>> >>>>> -- 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/707638fc-ebf1-4350-bbf5-5ff46a610dfd%40googlegroups.com.