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 变量类型及命名规则介绍
Jun 08 Python
python操作sqlite的CRUD实例分析
May 08 Python
如何在Python中编写并发程序
Feb 27 Python
Python中内建函数的简单用法说明
May 05 Python
Python编程之string相关操作实例详解
Jul 22 Python
Python minidom模块用法示例【DOM写入和解析XML】
Mar 25 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
Python 用户输入和while循环的操作
May 23 Python
asyncio异步编程之Task对象详解
Mar 13 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命名空间(Namespace)的使用详解
2013/05/04 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
Immutable 在 JavaScript 中的应用
2016/05/02 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python网站验证码识别
2016/01/25 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
python requests post多层字典的方法
2018/12/27 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python利用opencv实现颜色检测
2021/02/23 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
会计师事务所审计实习自我鉴定
2013/09/20 职场文书
教师简历自我评价
2014/02/03 职场文书
学习雷锋活动总结
2014/04/29 职场文书
市场营销调查计划书
2014/05/02 职场文书
绿色出行口号
2014/06/18 职场文书
干部作风建设工作总结
2014/10/29 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python