예제 #1
0
    def post(self):
        """ Creates an image """
        args = image_upload.parse_args()
        image = args['image']

        folder = args['folder']
        if len(folder) > 0:
            folder = folder[0].strip('/') + folder[1:]

        directory = os.path.join(Config.DATASET_DIRECTORY, folder)
        path = os.path.join(directory, image.filename)

        if os.path.exists(path):
            return {'message': 'file already exists'}, 400

        if not os.path.exists(directory):
            os.makedirs(directory)

        pil_image = Image.open(io.BytesIO(image.read()))

        image_model = ImageModel(file_name=image.filename,
                                 width=pil_image.size[0],
                                 height=pil_image.size[1],
                                 path=path)

        image_model.save()
        pil_image.save(path)

        image.close()
        pil_image.close()
        return query_util.fix_ids(image_model)
예제 #2
0
def addImage():
    st.header("Upload image to continue")
    img_name = st.text_input("Enter image name")

    img_file = st.file_uploader("Insert Image Here")

    if img_file:
        img = Image.open(img_file)
        st.image(img)
        img_path = "./uploads/" + img_name + ".png"
        img.save(img_path)

    add_btn = st.button("Save image")

    if add_btn and img_name and img_file:
        with st.spinner("Saving your Image"):
            img_data = ImageModel(name=img_name, path=img_path)
            sess.add(img_data)
            sess.commit()
            st.success("Image successfully saved")
예제 #3
0
def handle_image_uploading():
    if not request.files or not request.files['file']:
        return ApiResponse(message="File is missing", has_error=True).send()

    if not request.form['title'] or len(request.form['title']) > constants.IMAGE_TITLE_MAX_LENGTH:
        return ApiResponse(message="Title is invalid", has_error=True).send()

    if request.form['description'] and len(request.form['description']) > constants.IMAGE_DESCRIPTION_MAX_LENGTH:
        return ApiResponse(message="Description is invalid", has_error=True).send()

    # read the file and prepare a filename
    file = request.files['file']
    filename = request.files['file'].filename
    if not is_allowed_file_extension(filename):
        return ApiResponse(message="File type is not supported", has_error= True).send()

    # generate today's folder such as folder '12-2-2012'
    storage_full_dir = generate_todays_date_folder()

    filename = secure_filename(file.filename)
    secret_filename = generate_secret_filename_for(filename)
    image_complete_path = os.path.join(storage_full_dir, secret_filename)
    file.save(image_complete_path)

    image_record = ImageModel(title=request.form['title'],
                              description=request.form['description'],
                              image_filename=secret_filename,
                              storage_full_dir=storage_full_dir)

    db.session.add(image_record)
    db.session.commit()

    # we do refresh to update image_record with ID from the db
    db.session.refresh(image_record)
    short_url = image_record.self_assign_short_url()
    db.session.add(image_record)
    db.session.commit()

    image_full_url = _generate_image_url(short_url)
    return ApiResponse(message='Image uploaded: URL => {}'.format(image_full_url)).send()
def saveImage():
    img_name = st.text_input("Enter name of Image")
    img_file = st.file_uploader("Upload your Image")
    if img_file:

        img = Image.open(img_file)
        st.image(img)
        btn = st.button("Save Image")

        if btn:
            try:
                # to save image file in uploads folder
                path = "uploads/" + img_name + ".png"
                img.save(path)

                # to save image in database
                img_data = ImageModel(name=img_name, filename=path)
                sess.add(img_data)
                sess.commit()

                st.success("Image Saved")
            except:
                st.error('Something went wrong')