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. ThreadLocal原理及用法详解

    背景 一直以来对ThreadLocal用法模棱两可,不知道怎么用今天好好研究了下给大家分享下. 1.讲解ThreadLocal之前先回顾下什么是取模.x^y.弱引用. 1. 取模运算实际上是计算两数相 ...

  2. longpo的回文

    啊...比赛的时候输入打错了,结束之后还照着题解把DP部分重构了一遍然而还是WA...样例都没过,然后直接输了-1 明显的DP...而且数据范围这么小,显然怎么搞都可以... 而且这样的回文的DP是很 ...

  3. 【Codeforces1109B_CF1109B】Sasha and One More Name(字符串)

    题目: Codeforces1109B 我打的是 Div2 ,所以我看到的题号实际上是 1113D -- 考场上傻了没敢大力猜结论没做出来这道题,不幸掉分-- 1869->1849 嘤嘤嘤 翻译 ...

  4. Kibana里No Marvel Data Found问题解决(图文详解)

    问题详情 http://192.168.80.145:5601/app/marvel#/no-data?_g=(refreshInterval:(display:'10%20seconds',paus ...

  5. Alpha Edition [ Group 1 ]

    Deltafish Alpha Edition 一.博客归档(记录人:娄雨禛) 小组会议 DeltaFish 校园物资共享平台 第一次小组会议 DeltaFish 校园物资共享平台 第二次小组会议 D ...

  6. CSS——padding

    padding是盒子内容与边框的距离. padding:10px;/*上下左右都是10px*/ padding:10px 20px;/*上下是10px 左右是20px*/ padding:10px 2 ...

  7. javascript常用功能函数

    特殊字符转义:将<, >, &, “进行转义 function escape(str){ return str.replace(/[<>"&]/g,f ...

  8. css nth-child 的应用

    最近改视频监控页面,由于窗口比较多,以前是通过计算窗口大小位置来处理页面布局的,其实还是比较麻烦,而且偶尔会有页面位置错乱的现象,虽然只是及其偶尔的现象,但总归是不好. 计算窗口位置的代码: /*监控 ...

  9. GatewayWorker + LayIM实现即时聊天

    一.程序目录结构 二.代码展示 附LayIM开发文档:https://www.layui.com/doc/modules/layim.html 1.前端代码 <!DOCTYPE html> ...

  10. demo_static_resrouce

    环境 win10 + webstorm 2019.1.3 + node 12.x + yarn 实现的的功能 基本的js打包(支持规范:ES6 module | requirejs | commonj ...