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中的__init__和__new__
Mar 12 Python
Python中多线程及程序锁浅析
Jan 21 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
Tensorflow之Saver的用法详解
Apr 23 Python
pygame实现贪吃蛇游戏(下)
Oct 29 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 Python
Python多线程:主线程等待所有子线程结束代码
Apr 25 Python
python对接ihuyi实现短信验证码发送
May 10 Python
Pandas缺失值2种处理方式代码实例
Jun 13 Python
Python加载数据的5种不同方式(收藏)
Nov 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下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
jQuery each()小议
2010/03/18 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python基于twisted实现简单的web服务器
2014/09/29 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
法律专业推荐信范文
2013/11/29 职场文书
中学家长会邀请函
2014/02/03 职场文书
考察现实表现材料
2014/05/19 职场文书
悬空寺导游词
2015/02/05 职场文书
党员转正党支部意见
2015/06/02 职场文书
给校长的建议书范文
2015/09/14 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js