예제 #1
0
파일: media.py 프로젝트: ArtBears/reddit
def upload_media(image, file_type='.jpg'):
    """Upload an image to the media provider."""
    f = tempfile.NamedTemporaryFile(suffix=file_type, delete=False)
    try:
        img = image
        do_convert = True
        if isinstance(img, basestring):
            img = str_to_image(img)
            if img.format == "PNG" and file_type == ".png":
                img.verify()
                f.write(image)
                f.close()
                do_convert = False

        if do_convert:
            img = img.convert('RGBA')
            if file_type == ".jpg":
                # PIL does not play nice when converting alpha channels to jpg
                background = Image.new('RGBA', img.size, (255, 255, 255))
                background.paste(img, img)
                img = background.convert('RGB')
                img.save(f, quality=85) # Bug in the JPG encoder with the optimize flag, even if set to false
            else:
                img.save(f, optimize=True)

        if file_type == ".png":
            optimize_png(f.name, g.png_optimizer)
        elif file_type == ".jpg":
            optimize_jpeg(f.name, g.jpeg_optimizer)
        contents = open(f.name).read()
        file_name = _filename_from_content(contents) + file_type
        return g.media_provider.put(file_name, contents)
    finally:
        os.unlink(f.name)
    return ""
예제 #2
0
파일: media.py 프로젝트: ziyoudefeng/reddit
def upload_media(image, file_type='.jpg'):
    """Upload an image to the media provider."""
    f = tempfile.NamedTemporaryFile(suffix=file_type, delete=False)
    try:
        img = image
        do_convert = True
        if isinstance(img, basestring):
            img = str_to_image(img)
            if img.format == "PNG" and file_type == ".png":
                img.verify()
                f.write(image)
                f.close()
                do_convert = False

        if do_convert:
            img = img.convert('RGBA')
            if file_type == ".jpg":
                # PIL does not play nice when converting alpha channels to jpg
                background = Image.new('RGBA', img.size, (255, 255, 255))
                background.paste(img, img)
                img = background.convert('RGB')
                img.save(f, quality=85) # Bug in the JPG encoder with the optimize flag, even if set to false
            else:
                img.save(f, optimize=True)

        if file_type == ".png":
            optimize_png(f.name, g.png_optimizer)
        elif file_type == ".jpg":
            optimize_jpeg(f.name, g.jpeg_optimizer)
        contents = open(f.name).read()
        file_name = _filename_from_content(contents) + file_type
        return g.media_provider.put(file_name, contents)
    finally:
        os.unlink(f.name)
    return ""
예제 #3
0
def upload_media(image, never_expire=True, file_type='.jpg'):
    """Given a link and an image, uploads the image to s3 into an image
    based on the link's fullname"""
    url = str()
    mime_type = mimetypes.guess_type("file" + file_type)[
        0]  # Requires a filename with the extension
    f = tempfile.NamedTemporaryFile(suffix=file_type, delete=False)
    try:
        img = image
        do_convert = True
        if isinstance(img, basestring):
            img = str_to_image(img)
            if img.format == "PNG" and file_type == ".png":
                img.verify()
                f.write(image)
                f.close()
                do_convert = False

        if do_convert:
            img = img.convert('RGBA')
            if file_type == ".jpg":
                # PIL does not play nice when converting alpha channels to jpg
                background = Image.new('RGBA', img.size, (255, 255, 255))
                background.paste(img, img)
                img = background.convert('RGB')
                img.save(
                    f, quality=85
                )  # Bug in the JPG encoder with the optimize flag, even if set to false
            else:
                img.save(f, optimize=True)

        if file_type == ".png":
            optimize_png(f.name, g.png_optimizer)
        elif file_type == ".jpg":
            optimize_jpeg(f.name, g.jpeg_optimizer)
        contents = open(f.name).read()
        file_name = get_filename_from_content(contents)
        if g.media_store == "s3":
            url = s3_upload_media(contents,
                                  file_name=file_name,
                                  mime_type=mime_type,
                                  file_type=file_type,
                                  never_expire=True)
    finally:
        os.unlink(f.name)
    return url
예제 #4
0
파일: media.py 프로젝트: DanHoerst/reddit
def upload_media(image, never_expire=True, file_type='.jpg'):
    """Given a link and an image, uploads the image to s3 into an image
    based on the link's fullname"""
    url = str()
    mime_type = mimetypes.guess_type("file" + file_type)[0] # Requires a filename with the extension
    f = tempfile.NamedTemporaryFile(suffix=file_type, delete=False)
    try:
        img = image
        do_convert = True
        if isinstance(img, basestring):
            img = str_to_image(img)
            if img.format == "PNG" and file_type == ".png":
                img.verify()
                f.write(image)
                f.close()
                do_convert = False

        if do_convert:
            img = img.convert('RGBA')
            if file_type == ".jpg":
                # PIL does not play nice when converting alpha channels to jpg
                background = Image.new('RGBA', img.size, (255, 255, 255))
                background.paste(img, img)
                img = background.convert('RGB')
                img.save(f, quality=85) # Bug in the JPG encoder with the optimize flag, even if set to false
            else:
                img.save(f, optimize=True)
        
        if file_type == ".png":
            optimize_png(f.name, g.png_optimizer)
        elif file_type == ".jpg":
            optimize_jpeg(f.name, g.jpeg_optimizer)
        contents = open(f.name).read()
        file_name = get_filename_from_content(contents)
        if g.media_store == "s3":
            url = s3_upload_media(contents, file_name=file_name, mime_type=mime_type, file_type=file_type, never_expire=True)
    finally:
        os.unlink(f.name)
    return url