예제 #1
0
파일: views.py 프로젝트: NaPs/Docbucket
def thumbnail(request, type, identifier):
    response = HttpResponse(mimetype="image/png")
    size = str(request.GET.get("size", "190x270"))
    if not re.match("\d+[x]\d+", size):
        size = "190x270"

    cache_key = "thumbnail:%s:%s:%s" % (type, identifier, size)
    cached = cache.get(cache_key)
    if cached is None:
        if type == "file":
            file_ = str(os.path.join(settings.INCOMING_DIRECTORY, identifier))
        elif type == "document":
            document = get_object_or_404(Document, pk=identifier)
            file_ = Blob(document.document.read())

        image = Image(file_)
        image.filterType(FilterTypes.SincFilter)
        image.scale(size)

        output = Blob()
        image.write(output, "png")
        response.write(output.data)
        cache.set(cache_key, output.data)
    else:
        response.write(cached)

    return response
def test():

    from pgmagick import Image, FilterTypes
    im = Image( './chambres-deluxes-I/chambre-101-s-474.tif' )
    im.quality( 100 )
    im.filterType( FilterTypes.SincFilter )
    im.scale( '100x100' )
    im.sharpen( 1.0 )
    im.write( 'output.jpg' )
예제 #3
0
def deferred_pgmagick():
    im = PGImage(imagename)

    im.filterType(FilterTypes.CatromFilter)
    im.zoom(Geometry(1024, 768))

    im.quality(85)
    im.magick('jpeg')
    im.write(Blob())
def test():

    from pgmagick import Image, FilterTypes
    im = Image('./chambres-deluxes-I/chambre-101-s-474.tif')
    im.quality(100)
    im.filterType(FilterTypes.SincFilter)
    im.scale('100x100')
    im.sharpen(1.0)
    im.write('output.jpg')
예제 #5
0
def addScreenshot(f, arg, user_id, item):
    if item == 'map':
        Object = Maps.objects.filter(id=arg)
        if not Object:
            return False
        if not (Object[0].user_id == user_id.id or user_id.is_superuser):
            return False
    else:
        return False
    tempname = '/tmp/screenshot.temp'
    with open(tempname, 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

    command = 'file -b --mime-type %s' % tempname
    proc = Popen(command.split(), stdout=PIPE).communicate()
    mimetype = proc[0].strip()
    if mimetype not in ['image/jpeg','image/png','image/gif']:
        return False

    userObject = User.objects.get(pk=Object[0].user_id)
    transac = Screenshots(
        user = userObject,
        ex_id = int(arg),
        ex_name = item+"s",
        posted =  timezone.now(),
        map_preview = False,
        )
    transac.save()

    path = os.getcwd() + os.sep + __name__.split('.')[0] + '/data/screenshots/' + str(transac.id) + '/'
    if not os.path.exists(path):
        os.makedirs(path)

    shutil.move(tempname, path + arg + "." + mimetype.split('/')[1])

    command = 'identify -format "%w,%h" {0}'.format(path + arg + "." + mimetype.split('/')[1])
    proc = Popen(command.split(), stdout=PIPE).communicate()
    details = proc[0].strip().strip('"').split(',')

    im = Image(Blob(open(path + arg + "." + mimetype.split('/')[1]).read()), Geometry(int(details[0]),int(details[1])))
    
    scaleH = int(details[0]) / 100.0
    scaleH = 250 / scaleH
    scaleH = int(details[1]) / 100.0 * scaleH

    im.quality(100)
    im.filterType(FilterTypes.SincFilter)
    im.scale('250x%s' % scaleH)
    im.sharpen(1.0)
    im.write(str(path + arg + "-mini." + mimetype.split('/')[1]))
예제 #6
0
 def create_test_data(self):
     im = Image(root('resources', 'color_circle.png').encode('utf-8'))
     if self.mode == 'RGB':
         im.type(ImageType.TrueColorType)
     elif self.mode == 'RGBA':
         im.type(ImageType.TrueColorMatteType)
     elif self.mode == 'L':
         im.type(ImageType.GrayscaleType)
     elif self.mode in 'LA':
         im.type(ImageType.GrayscaleMatteType)
     else:
         raise ValueError('Unknown mode: {}'.format(self.mode))
     im.filterType(FilterTypes.CatromFilter)
     im.zoom(Geometry(b"{}x{}!".format(self.size[0], self.size[1])))
     return [im]
예제 #7
0
 def create_test_data(self):
     im = Image(root('resources', 'color_circle.png').encode('utf-8'))
     if self.mode == 'RGB':
         im.type(ImageType.TrueColorType)
     elif self.mode == 'RGBA':
         im.type(ImageType.TrueColorMatteType)
     elif self.mode == 'L':
         im.type(ImageType.GrayscaleType)
     elif self.mode in 'LA':
         im.type(ImageType.GrayscaleMatteType)
     else:
         raise ValueError('Unknown mode: {}'.format(self.mode))
     im.filterType(FilterTypes.CatromFilter)
     im.zoom(Geometry(b"{}x{}!".format(self.size[0], self.size[1])))
     return [im]
예제 #8
0
import sys
from pgmagick import Image, FilterTypes as ft

# same
# convert SRC.jpg -filter Sinc -resize 500x500 -sharpen 1 -quality 100 DST.jpg
# gm convert SRC.jpg -filter Sinc -resize 500x500 -sharpen 1 -quality 100 DST.jpg

im = Image('./X.jpg')
im.quality(100)
im.sharpen(1.0)
im.write('./Y.jpg')

im = Image('./X.jpg')
im.quality(100)
im.filterType(ft.SincFilter)
im.scale('1000x1000')
im.sharpen(1.0)
im.write('./Y.jpg')

im = Image('./X.jpg')
im.quality(100)
im.filterType(ft.SincFilter)
im.scale('100x100')
im.sharpen(1.0)
im.write('./Y.jpg')

im = Image('./X.jpg')
im.quality(100)
im.filterType(ft.SincFilter)
im.scale('500x500')
im.sharpen(1.0)
예제 #9
0
                print orig_args['width'], orig_args['high']

                if getW > orig_args['width'] or getH > orig_args['high']:
                    log.error(
                        "[uid]:%s请求的缩略图大过于原图了。[origImg]:%sx%s,[requestImg]:%sx%s"
                        % (upUid, getW, getH, orig_args['width'],
                           orig_args['high']))
                    #原图返回
                    return '''{"img":"%s","thumb":"%s","status":"1"}''' % (
                        realAddImg, realAddImg)
                else:
                    thumb = Blob()
                    im = Image(orig_blob)
                    im.quality(100)
                    im.filterType(FilterTypes.SincFilter)
                    im.scale(upThumbnail)
                    im.sharpen(1.0)
                    thumbName = "%s_%s_%s_%s.%s" % (upUid, upMd5, timestamp,
                                                    upThumbnail, ext)
                    thumbFile = thumbDir + '/' + thumbName
                    im.write(thumbFile)
                    log.info("%s [uid]:%s成功生成缩略图%s." %
                             (client, upUid, thumbFile))
                    realThumbPath = thumbFile.split('/')
                    realAddThumb = realAdd + realThumbPath[
                        -2] + '/' + realThumbPath[-1]

                fp.close()

            return """{"img":"%s","thumb":"%s","status":"1"}""" % (
예제 #10
0
파일: resize.py 프로젝트: hhatto/pgmagick
from pgmagick import Image, FilterTypes
im = Image('X.jpg')
im.filterType(FilterTypes.SincFilter)
im.resize('100x100')
im.write('output.jpg')