python 在图片添加数字,初学者容易出现的报错及解决办法

本文介绍了一种使用Python的PIL库在图片右上角添加随机数字的方法。文章提供了详细的代码实现,并针对可能出现的问题如导入错误、字体文件路径问题及数字显示故障等提供了具体的解决方案。


   题目:在图片右上角添加数字

     

# -*- coding: utf-8 -*-
from PIL import Image,ImageDraw,ImageFont
import random
#open a photo

im = Image.open('C:/Users/Administrator/Desktop/cat.jpg')

#获取图像尺寸
w,h = im.size
wdraw = 0.9 * w
hdraw = 0.1 * h

#创建Pont对象
font = ImageFont.truetype('C:/Windows/Fonts/Arial.ttf' ,36)
#font = ImageFont.truetype('C:/Users/Administrator/Desktop/UniTortred.ttf', 30)
#font = ImageFont.load_default().font
#生成数字
rannum = str(random.randint(1,99))

print (rannum)
draw = ImageDraw.Draw(im)
draw.text((wdraw,hdraw),rannum, font=font,fill=(255,33,33))
im.show()
im.save('C:/Users/Administrator/Desktop/code.jpg','jpeg')

1、如果安装了Anaconda,使用Pycharm来编译,容易出现报错

ImportError: No module named PIL

解决办法:检查Pycharm的settings中此处是否为Anaconda下的python.exe.如果不是,选择右边的设置修改过来

2、出现报错  IOError: cannot open resource

 报错原因:此处路径不是绝对路径,或者路径下没有这种文字类型

 font = ImageFont.truetype('C:/Windows/Fonts/Arial.ttf' ,36)

3、如果没有报错,但是图片上也没有数字,则检查

draw.text((wdraw,hdraw),rannum, font=font,fill=(255,33,33))

此处(wdraw,hdraw)为数字所在的位置,如果位置出错,也无法显示,可以改成数字,如(100,90)进行测试。

另外,rannum此处为string类型

<think>好的,用户现在是一个初学Python的新手,想要学习如何写代码和识别代码。首先,我需要理解他们的需求。他们可能刚开始接触编程,对Python的基本概念还不熟悉,需要从最基础的部分入手。 用户之前询问过如何调整爱心的颜色和样式,现在转向学习Python的基础,这说明他们可能对编程有实际应用的兴趣,比如图形绘制,但需要先打好基础。我需要确保回答既能帮助他们建立基本概念,又能保持他们的学习兴趣。 接下来,我应该考虑如何结构化回答。通常,学习路径包括安装环境、基础语法、练习项目等。用户提到“写出代码”和“认出代码”,所以需要涵盖这两方面。可能需要分步骤介绍,每个步骤包含关键知识点和示例,让用户能够逐步跟进。 还要注意用户的初学者身份,避免使用专业术语,或者使用时解释清楚。例如,变量、循环、函数这些概念需要用简单易懂的语言说明。同时,提供实际的代码示例,并解释每行代码的作用,帮助他们理解如何阅读和编写代码。 另外,用户可能对如何练习和巩固知识感兴趣,所以需要推荐一些练习方法和资源,比如在线练习平台、项目建议、学习社区等。这些资源可以帮助他们在实践中提高,同时保持学习动力。 需要确保回答的结构清晰,分点明确,每个部分都有小标题,便于用户快速找到所需信息。同时,使用鼓励性的语言,让用户感到支持,增强他们的学习信心。 最后,检查内容是否准确,避免错误,尤其是代码示例的正确性。确保所有建议的资源是当前可用且适合初学者的。同时,保持回答简洁,不过于冗长,以免让用户感到 overwhelmed。</think>好的!如果你是Python编程的初学者,可以从以下 **基础学习路径** 开始。我会用简单易懂的方式分步骤说明,并提供实际代码示例帮助你理解。 --- ### **一、先学核心基础** #### 1. **安装环境** - 下载安装 [Python官网](https://www.python.org) 的最新版本 - 推荐使用编辑器:**VS Code**(免费)或 **PyCharm社区版**(免费) #### 2. **基础语法** - **变量与数据类型** ```python name = "小明" # 字符串(文本) age = 18 # 整数 height = 1.75 # 浮点数(小数) is_student = True # 布尔值(True/False) ``` - **基本运算** ```python a = 5 + 3 # 加法 b = 10 % 3 # 取余(结果为1) ``` - **条件判断**(`if-elif-else`) ```python score = 85 if score >= 90: print("优秀") elif score >= 60: print("及格") else: print("不及格") ``` - **循环**(`for`和`while`) ```python # 遍历列表 fruits = ["苹果", "香蕉", "橘子"] for fruit in fruits: print(f"我喜欢吃{fruit}") # 数字循环 for i in range(5): # 输出0到4 print(i) ``` --- ### **二、理解代码的关键技巧** #### 1. **拆解代码结构** - **函数定义** ```python def add(a, b): return a + b result = add(3, 5) # 调用函数后result=8 ``` - **列表操作** ```python numbers = [1, 2, 3] numbers.append(4) # 添加元素 → [1,2,3,4] last = numbers.pop() # 删除最后一个元素 → last=4 ``` #### 2. **调试技巧** - 使用 `print()` 输出中间值: ```python x = 10 print("x的值是:", x) # 检查变量状态 ``` - 用注释逐步分析代码: ```python # 计算1到10的和 total = 0 for i in range(1, 11): total += i # 每次循环累加i的值 print(total) # 输出55 ``` --- ### **三、实战练习方法** #### 1. **从简单项目入手** - **案例1:计算器** ```python num1 = float(input("输入第一个数字: ")) operator = input("输入运算符(+ - * /): ") num2 = float(input("输入第二个数字: ")) if operator == "+": print(num1 + num2) elif operator == "-": print(num1 - num2) elif operator == "*": print(num1 * num2) elif operator == "/": print(num1 / num2) else: print("无效运算符") ``` - **案例2:猜数字游戏** ```python import random target = random.randint(1, 100) # 生成1到100的随机数 while True: guess = int(input("猜一个数字(1-100): ")) if guess < target: print("猜小了!") elif guess > target: print("猜大了!") else: print("恭喜!猜对了!") break ``` #### 2. **学习资源推荐** - 免费教程:[菜鸟教程Python3](https://www.runoob.com/python3/python3-tutorial.html) - 互动练习:[LeetCode初级题库](https://leetcode.cn/problemset/all/?difficulty=EASY) - 实战项目:[Python小型项目50例](https://github.com/trekhleb/learn-python) --- ### **四、如何“认出”代码** #### 1. **关键符号识别** - `=`:赋值(不是数学中的等号) - `:` 和缩进:表示代码块的开始(如`if`、`for`后必有冒号) - `#`:注释(不会被程序执行) #### 2. **常见代码模式** - **读取用户输入** ```python name = input("请输入你的名字: ") ``` - **处理异常** ```python try: num = int(input("输入数字: ")) except ValueError: print("这不是有效的数字!") ``` --- ### **五、避免的常见误区** 1. **不要死记代码**:理解逻辑比背代码更重要 2. **先写伪代码**:用中文描述思路,再翻译成Python 3. **善用搜索引擎**:遇到报错时直接复制错误信息搜索(如搜索 `TypeError: 'int' object is not subscriptable`) --- **下一步建议**: 1. 每天练习30分钟基础代码 2. 尝试修改现有代码(比如把猜数字的范围从1-100改成1-1000) 3. 加入学习社群(如知乎Python话题、优快云论坛)交流问题 坚持2-3个月后,你就能独立写出完整程序啦! (^∀^)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值