import cStringIO
import io
import base64
from PIL import Image, ImageTk
def img_crop_to_file(request):
#获取文件
img_data = request.POST.get('imgUrl')
ext = img_data.split('base64,')[0].split('/')[1].split(';')[0]
img_data = img_data.split('base64,')[1]
imgData = base64.b64decode(img_data) data_stream = cStringIO.StringIO()
data_stream.write(imgData)
source_image = Image.open(data_stream) #原始尺寸
imgInitW = request.POST.get('imgInitW')
imgInitH = request.POST.get('imgInitH')
imgInitW,imgInitH = int(imgInitW),int(imgInitH) #调成后尺寸
imgW = request.POST.get('imgW')
imgH = request.POST.get('imgH')
imgW,imgH = int(imgW),int(imgH) #偏移量
imgY1 = request.POST.get('imgY1')
imgX1 = request.POST.get('imgX1')
imgY1,imgX1 = int(imgY1),int(imgX1) #裁剪框
cropW = request.POST.get('cropW')
cropH = request.POST.get('cropH')
cropW,cropH = int(cropW),int(cropH) #旋转角度
angle = request.POST.get('rotation')
angle = int(angle) #创建新的图片
source_image = source_image.resize((imgW,imgH)) rotated_image = source_image.rotate(-float(angle)) rotated_width,rotated_height = rotated_image.size dx = rotated_width - imgW
dy = rotated_height - imgH cropped_rotated_image = Image.new('RGBA',(int(imgW),int(imgH)),0)
a = rotated_image.crop((dx/2,dy/2,dx/2+imgW,dy/2+imgH))
a.save('crop.jpeg')
cropped_rotated_image.paste(rotated_image.crop((dx/2,dy/2,dx/2+imgW,dy/2+imgH)),(0,0,imgW,imgH)) final_image = Image.new('RGBA',(int(cropW),int(cropH)),0)
final_image.paste(cropped_rotated_image.crop((imgX1,imgY1,imgX1+cropW,imgY1+cropH)),(0,0,cropW,cropH)) filename = str(uuid.uuid1())
uuidname = '%s.%s' % (filename,ext)
output_filename = os.path.join(os.path.join(MEDIA_ROOT,'images/topic_covers_processed/'),uuidname)
print(output_filename)
final_image.save(output_filename)
return HttpResponse(json.dumps({'status':'success','url':'/pics/images/topic_covers_processed/%s' % uuidname}))

[Python]croppic 裁剪图片的Python后台实现的更多相关文章

  1. python批量裁剪图片

    """用Pythonp批量裁剪图片""" from PIL import Imageimport matplotlib.pyplot as ...

  2. Python爬去图片实例,python 爬取图片

    # coding:utf-8 import requests import re import time proxies = { "http": "http://124. ...

  3. Python批量自动裁剪图片

    """用Pythonp批量裁剪图片""" from PIL import Image import matplotlib.pyplot as ...

  4. Python,PIL压缩裁剪图片

    自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...

  5. .mat转成.npy文件+Python(Pytorch)压缩裁剪图片

    需求:现有数据文件V1.mat,里面包含多个数据集,现需将里面的images数据集提取出来,然后进行压缩裁剪成指定大小 V1.mat数据集目录: 1.从mat文件中提取数据(使用Python) V1. ...

  6. 使用Python PIL库中的Image.thumbnail函数裁剪图片

    今天,是我来到博客园的第五天,发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢 ...

  7. Python:实现图片裁剪的两种方式——Pillow和OpenCV

    原文:https://blog.csdn.net/hfutdog/article/details/82351549 在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还 ...

  8. 如何用python裁剪图片

    如何使用python裁剪图片 如上图所示,这是一张包含了各类象棋棋子的图片.我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库 实现. 一. 安装PIL库 如果此前没有安装过PI ...

  9. 【python】带图片验证码的登录自动化实战

    近期在跟进新项目的时候,整体的业务线非常之长,会一直重复登录退出不同账号的这个流程,所以想从登录开始实现部分的自动化.因为是B/S的架构,所以采用的是selenium的框架来实现.大致实现步骤如下: ...

随机推荐

  1. bzoj1877 晨跑(费用流)

    1877: [SDOI2009]晨跑 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2138  Solved: 1145 Description Elax ...

  2. [Swift通天遁地]四、网络和线程-(15)程序内购功能

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. Java一维数组二维数组详解API

    所谓数组,是有序的元素序列. 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数字编号称为下标 ...

  4. golang——常用内建函数

    (1)func len(v Type) int 返回长度,取决于具体类型:字符串返回字节数:channel返回缓存元素的个数: (2)func cap(v Type) int 返回容量,取决于具体类型 ...

  5. Eclipse设置空格代替tab

    1.点击 window->preference-,依次选择 General->Editors->Text Editors,选中右侧的 insert space for tabs;如下 ...

  6. 发布 Windows 服务

    1. 如何新建 Windows 服务 打开VS,“新建项目”-->“windows 桌面”-->“windows 服务”: http://www.cnblogs.com/sorex/arc ...

  7. No operations allowed after connection closed--转

    https://www.jianshu.com/p/1626d41572f2 Spring boot的单数据源配置比较简单,只需要在application.properties配置相关的jdbc连接的 ...

  8. Spring Cloud (4) 服务消费者-Feign

    Spring Cloud Feign Spring Cloud Feign 是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单,我们只需要创建接口并 ...

  9. Intent的调用

    //Intent  intent=new Intent();//intent.setClass(MainActivity.this, GPSService.class);//以上二条可以合并成如下一条 ...

  10. (原创)HyperPacer使用技巧之集合点设置

    版权声明:本文为原创文章,转载请先联系并标明出处 性能测试中,我们可以模拟最真实的用户操作来建立性能模型,但是这种模拟是相对的.譬如12306网站春运开始后每一天都是高峰,这种高负载情况会持续一至两个 ...