python如何实现内容写在图片上


Posted in Python onMarch 23, 2018

本文实例为大家分享了python将内容写在图片上的具体代码,供大家参考,具体内容如下

# -*- coding: utf-8 -*-
# Created on 2018/3/20
import base64
import random
import os
import sys
import time

from PIL import Image, ImageFont, ImageDraw

reload(sys)
sys.setdefaultencoding('utf8')

BASE_PATH = "E:\\MyWork\\qingwa\\5\\" # 底图所在路径
TMP_PATH = "E:\\MyWork\\qingwa\\5\\tmp\\" # 生成图片缓存路径
font_size = 35


# 216 194 119

class MyCar:

 def __init__(self, name):
  self.name = name
  self.name_append = "的气质适合开"
  if not os.path.exists(TMP_PATH):
   os.mkdir(TMP_PATH)
  self.end_path = TMP_PATH + str(int(time.time())) + str(random.randint(100, 999)) + ".png" # 图片处理完之后保存的文件名
  self.data = "" # base64数据初始化
  self.pic_handle()
  self.base_64()

 def base_64(self):
  """
  将图片读成base64的格式,返回给移动端渲染
  :return:
  """
  res = open(self.end_path, 'rb')
  base64_data = base64.b64encode(res.read())
  res.close()
  d = {
   'image': 'data:image/jpg;base64,' + base64_data
  }
  self.data = d

 def pic_handle(self):
  # 底图路径
  img_path = BASE_PATH + str(random.randint(1, 8)) + ".jpg"
  # 底图的操作对象
  font_img = Image.open(img_path).convert("RGBA")
  # 即将在该底图上写字
  draw = ImageDraw.Draw(font_img)
  # 画笔
  name_font = ImageFont.truetype("wryh.TTF", size=35)
  # 即将写的字
  name = self.name + self.name_append
  # 底图的宽高
  w, h = font_img.size
  # 写在底图上的区域,计算字符串的长度,让它宽度居中(高度居中 同理)
  # name_loaction分别指宽高,图片左上角为(0,0)坐标
  # 写字,fill为字体颜色,RGB值
  # try except 避免字符串编码的问题(unicode编码 再次转换会报错)
  try:
   name_location = (((w - len(unicode(name, "UTF-8")) * font_size) / 2), 76)
   draw.text(name_location, unicode(name, "UTF-8"), fill=(216, 194, 119), font=name_font)
  except BaseException as e:
   print e.message
   name_location = (((w - len(name) * font_size) / 2), 76)
   draw.text(name_location, name, fill=(216, 194, 119), font=name_font)
  print self.end_path
  # 保存处理好的图片
  font_img.save(self.end_path)
  # 显示图片
  font_img.show()

 def end_data(self):
  return self.data


if __name__ == '__main__':
 my_car = MyCar("测试")
 return_data = my_car.end_data()
 print type(return_data)

效果图

python如何实现内容写在图片上

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python+Django在windows下的开发环境配置图解
Nov 11 Python
python实现通过pil模块对图片格式进行转换的方法
Mar 24 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
Python读取本地文件并解析网页元素的方法
May 21 Python
python实现计算器功能
Oct 31 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
详解python对象之间的交互
Sep 29 Python
Python list和str互转的实现示例
Nov 16 Python
Django展示可视化图表的多种方式
Apr 08 Python
python_tkinter弹出对话框创建
Mar 20 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 Python
Python实现的自定义多线程多进程类示例
Mar 23 #Python
python爬取各类文档方法归类汇总
Mar 22 #Python
关于Python正则表达式 findall函数问题详解
Mar 22 #Python
Django自定义过滤器定义与用法示例
Mar 22 #Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 #Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 #Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 #Python
You might like
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python中的数据结构比较
2019/05/13 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
python已协程方式处理任务实现过程
2019/12/27 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
Weblogc domain问题
2014/01/27 面试题
JMS中Topic和Queue有什么区别
2013/05/15 面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
人事部专员岗位职责
2014/03/04 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
年度考核个人总结
2015/03/06 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
幼儿园开学温馨提示
2015/07/15 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
人力资源部工作计划
2019/05/14 职场文书
python入门学习关于for else的特殊特性讲解
2021/11/20 Python