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常见文件操作的函数示例代码
Nov 15 Python
python实现数独算法实例
Jun 09 Python
使用Python内置的模块与函数进行不同进制的数的转换
Mar 12 Python
python正则表达式及使用正则表达式的例子
Jan 22 Python
python 常用的基础函数
Jul 10 Python
Python数据类型之Number数字操作实例详解
May 08 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
Python的collections模块真的很好用
Mar 01 Python
python爬虫破解字体加密案例详解
Mar 02 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 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代码收集表单内容并写入文件的代码
2012/01/29 PHP
PHP插入排序实现代码
2013/04/04 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
JavaScript高级程序设计
2006/12/29 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
学习vue.js计算属性
2016/12/03 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
python3.x实现发送邮件功能
2018/05/22 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
Python调用JavaScript代码的方法
2020/10/27 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
宿舍卫生检讨书
2014/01/16 职场文书
同事打架检讨书
2014/02/04 职场文书
《尊严》教学反思
2014/02/11 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
教学副校长工作总结
2015/08/13 职场文书
Python上下文管理器Content Manager
2021/06/26 Python
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题