[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的框架来实现.大致实现步骤如下: ...
随机推荐
- phonegap+cordova+ionic调用原生API
上一篇博客讲了phonegap+cordova+ionic的环境搭建,今天再来分享一篇cordova调用原生API的文章.从技术角度上来讲,这并不是很难,只是有些细节要是没有注意,或者某些步骤不知道的 ...
- JS判断数组是否包含某元素
我在学习ES6数组拓展时,发现了新增了不少了有趣的数组方法,突然想好工作中判断数组是否包含某个元素是非常常见的操作,那么这篇文章顺便做个整理. 1.for循环结合break 可能很多人第一会想到for ...
- 常用mysql记录
多个关键词 like$joinwhere .=" and CONCAT(`JpTel`,`JpName`) Like '%$keywords%' ";
- 【POJ3280/洛谷2890】[Usaco2007 Open Gold]Cheapest Palindrome(动态规划)
题目: POJ3280 洛谷2980 分析: 首先,考虑只可以加字的情况 设\(s[i]\)表示第\(i\)个字符,\(add[i]\)表示加上一个字母\(i\)的花费,\(dp[i][j]\)表示把 ...
- EF在应用程序配置文件中找不到名为“XXX”的连接字符串。
现象: 在配置EF的时候需要如题所述的问题,仔细检查了在EF实体模型对应程序集下的APP.Config文件中的ConnectionString配置项有了XXX项的数据库字符串的配置: <conn ...
- NSNotificationCenter 的使用详解
通常我们在 iOS 中发生什么事件时该做什么是由 Delegate 实现的,例如 View 加载完后会触发 viewDidLoad.Apple 还为我们提供了另一种通知响应方式,那就是 NSNotif ...
- 【转】Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
概要 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.第1部分 Vec ...
- [转]STL之vector容器详解
vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...
- web流行工具
中小型公司: Node.js:现代工业化前端的基础: RequireJS:AMD规范, 即将过时的 JavaScript 模块化方案: Bower:前端模块源: npm:前端工具源,另一个潜在的前端模 ...
- 依存分析 Dependency Parsing
依存分析 Dependency Parsing 句子成分依存分析主要分为两种:句法级别的和语义级别的 依存句法分析 syntactic dependency parsing 语义依存分词 semant ...