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 获取进程pid号的方法
Mar 10 Python
Python实现CET查分的方法
Mar 10 Python
python函数形参用法实例分析
Aug 04 Python
浅析Python基础-流程控制
Mar 18 Python
总结python爬虫抓站的实用技巧
Aug 09 Python
python多进程实现进程间通信实例
Nov 24 Python
Django权限机制实现代码详解
Feb 05 Python
python提取具有某种特定字符串的行数据方法
Dec 11 Python
利用python修改json文件的value方法
Dec 31 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
Python concurrent.futures模块使用实例
Dec 24 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
显示、隐藏密码
2006/07/01 Javascript
js option删除代码集合
2008/11/12 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
Django模板语言 Tags使用详解
2019/09/09 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
linux 下selenium chrome使用详解
2020/04/02 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
英国电子产品购物网站:Tech in the basket
2019/11/08 全球购物
中秋节礼品促销方案
2014/02/02 职场文书
高考标语大全
2014/06/05 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
Python访问Redis的详细操作
2021/06/26 Python
Java界面编程实现界面跳转
2022/06/16 Java/Android