Tuesday, February 20, 2018

'base64' is not a text encoding; use codecs.decode() to handle arbitrary codecs

Its showing error LookupError: 'base64' is not a text encoding; use codecs.decode() to handle arbitrary codecs.

Last few lines when the execution stops are - thumbnail = resize(photo_data, 200, 200) File "/home/anurag/photoshare/app.py", line 406, in resize image_string = StringIO(img.decode('base64')) LookupError: 'base64' is not a text encoding; use codecs.decode() to handle arbitrary codecs

begin photo uploading code

photos uploaded using base64 encoding so they can be directly embeded in HTML

ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif'])  def allowed_file(filename):``  return '.' in filename and filename.rsplit('.', 1)[1] in   ALLOWED_EXTENSIONS    @app.route('/upload', methods=['GET', 'POST'])  @flask_login.login_required  def upload_file():  if request.method == 'POST':      uid = getUserIdFromEmail(flask_login.current_user.id)      imgfile = request.files['photo']      caption = request.form.get('caption')      album_id = request.form.get('album')      tags = request.form.get('tags')      photo_data = base64.standard_b64encode(imgfile.read())      thumbnail = resize(photo_data, 200, 200)      cursor = conn.cursor()      cursor.execute("INSERT INTO Photos (imgdata, thumbnail, user_id,   caption, album_id) VALUES ('{0}', '{1}', '{2}', '{3}',   '{4}')".format(photo_data, thumbnail, uid, caption, album_id))      conn.commit()      picture_id = cursor.lastrowid      print (picture_id)      print (tags)      insert_tags(picture_id, tags)      return redirect( url_for('get_album', id=album_id))  #The method is GET so we return a  HTML form to upload the a photo.  else:      return render_template('upload.html', loggedin=True,   albums=get_all_album_data())

end photo uploading code

resizes if greater than (x,y) else returns original

def resize(img, x,y):  image_string = StringIO(img.decode('base64'))  with Image.open(image_string) as image:      if image.size[0] > 200 and image.size[1] > 200:          cover = resizeimage.resize_cover(image, [x,y])          buffer = StringIO()          cover.save(buffer, format="JPEG")          return base64.b64encode(buffer.getvalue())      else:          return img

Then there is another filefor image. from PIL import Image from io import StringIO from resizeimage import resizeimage import os, base64

 def resize(img, x,y):  image_string = StringIO(img.decode('base64'))  ``with Image.open(image_string) as image:      if image.size[0] > 200 and image.size[1] > 200:          cover = resizeimage.resize_cover(image, [x,y])          return base64.standard_b64encode(cover)      else:          return img``

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/a9dafe13-12eb-4be4-bce9-e813854168d1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment