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中实现定制类的特殊方法总结
Sep 28 Python
Windows下python2.7.8安装图文教程
May 26 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
Python中常用信号signal类型实例
Jan 25 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
django的登录注册系统的示例代码
May 14 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
如何基于python生成list的所有的子集
Nov 11 Python
Python pymysql模块安装并操作过程解析
Oct 13 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
使javascript也能包含文件
2006/10/26 Javascript
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
js的回调函数详解
2015/01/05 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
jquery实现购物车基本功能
2019/10/25 jQuery
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python进阶教程之异常处理
2014/08/30 Python
Python使用OpenCV进行标定
2018/05/08 Python
Django模板Templates使用方法详解
2019/07/19 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Python Django view 两种return的实现方式
2020/03/16 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
审计工作个人的自我评价
2013/12/25 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
首都博物馆观后感
2015/06/05 职场文书
证婚人致辞精选
2015/07/28 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python