[Python]croppic 裁剪图片的Python后台实现
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后台实现的更多相关文章
- python批量裁剪图片
"""用Pythonp批量裁剪图片""" from PIL import Imageimport matplotlib.pyplot as ...
- Python爬去图片实例,python 爬取图片
# coding:utf-8 import requests import re import time proxies = { "http": "http://124. ...
- Python批量自动裁剪图片
"""用Pythonp批量裁剪图片""" from PIL import Image import matplotlib.pyplot as ...
- Python,PIL压缩裁剪图片
自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...
- .mat转成.npy文件+Python(Pytorch)压缩裁剪图片
需求:现有数据文件V1.mat,里面包含多个数据集,现需将里面的images数据集提取出来,然后进行压缩裁剪成指定大小 V1.mat数据集目录: 1.从mat文件中提取数据(使用Python) V1. ...
- 使用Python PIL库中的Image.thumbnail函数裁剪图片
今天,是我来到博客园的第五天,发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢 ...
- Python:实现图片裁剪的两种方式——Pillow和OpenCV
原文:https://blog.csdn.net/hfutdog/article/details/82351549 在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还 ...
- 如何用python裁剪图片
如何使用python裁剪图片 如上图所示,这是一张包含了各类象棋棋子的图片.我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库 实现. 一. 安装PIL库 如果此前没有安装过PI ...
- 【python】带图片验证码的登录自动化实战
近期在跟进新项目的时候,整体的业务线非常之长,会一直重复登录退出不同账号的这个流程,所以想从登录开始实现部分的自动化.因为是B/S的架构,所以采用的是selenium的框架来实现.大致实现步骤如下: ...
随机推荐
- bzoj题目分类
转载于http://blog.csdn.net/creationaugust/article/details/513876231000:A+B 1001:平面图最小割,转对偶图最短路 1002:矩阵树 ...
- @RequestParam 和 @RequestBody 接受的时间格式
这两个接受的时间格式不相同 首先看一下他们的区别 @RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容.(Ht ...
- 安卓UI自适应性
出于安卓的碎片化原因,针对不同屏幕大小,最好是做到以下几点: 1.能用相对布局的就不用绝对布局,尽量使用权重,weight设置,相对布局和线性布局同条件情况下,优先选线性布局 2.在res目录下创建不 ...
- 【洛谷2904/BZOJ1617】[USACO08MAR]跨河River Crossing(动态规划)
题目:洛谷2904 分析: 裸dp-- dp方程也不难想: \(dp[i]\)表示运\(i\)头牛需要的最短时间,\(sum[i]\)表示一次运\(i\)头牛(往返)所需的时间,则 \[dp[i]=m ...
- python 生成器函数.推导式.生成器表达式
一.生成器 什么是生成器,生成器的实质就是迭代器 在python中有三种方式来获取生成器: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 1 def func ...
- [转] 64位Oracle 11g R2的客户端连接时报ORA-01019错误
本文转自:http://blog.csdn.net/downmoon/article/details/8038583 在Win8企业版64位环境下,连接Oracle11g 服务端,搞了整整两天,特将过 ...
- android学习之路资料集合
版权声明:本文为 stormzhang 原创文章,可以随意转载,但必须在明确位置注明出处!!! 这篇博客背后的故事 一路走来很不容易,刚好知乎上被人邀请回答如何自学android编程, 就借这个机会在 ...
- log4j最全教程
(转自http://www.codeceo.com/article/log4j-usage.html) 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方 ...
- (转)Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
http://blog.csdn.net/zixiao217/article/details/53044890 读完第一节,我们已经对Quartz有了一个大体的认识,它可以定时帮我们执行一些处理程序, ...
- JavaScript ES 数组系列
正文从这开始- ECMAScript 5.1 中提供的数组方法 其中部分方法,ECMAScript 3 就出现了,但是本文不再细分. ECMA-262/5.1 规范:https://www.ecma- ...