在图片上动态的写文字

博客介绍了在图片上添加文字和绘制图形的示例。先加载图片,设置图形平滑,接着在指定坐标处写入文字,围绕文字绘制椭圆,设置内容类型并将处理后的图片输出到响应流,最后清理资源。还提到可通过修改 X、Y 坐标调整位置。

In my example, I have a picture of my son and I write the words “That’s my boy!”. Also, to show that you can combine graphic drawing and text together, I then draw an oval shape around the word that I just put on the picture.

In order to make this sample work, you need the following references:

using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Drawing.Text;

Also, you might need to play around with where you want your text and oval to go. Remember that both the placement of the text and graphic oval are based on X and Y coordinates. So, if you have to move the text/oval up, then change the value of the Y parameter. If you need to move the text/oval horizontally, then change the value of the X parameter.

There are basically 6 steps for my sample:

  1. Load your image:
    //Load the Image to be written on.
    Bitmap bitMapImage = new 
       System.Drawing.Bitmap(Server.MapPath("dallen.jpg" )  );
    Graphics graphicImage = Graphics.FromImage( bitMapImage ); 
  2. Set the graphics to be smooth.
    //Smooth graphics is nice.
    graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
  3. Write your text. Here is where you set your font. The X and Y coordinates are in the new point. (100 = X, 250 = Y).
    //Write your text.
    graphicImage.DrawString( "That's my boy!", 
       new Font("Arial", 12,FontStyle.Bold ), 
       SystemBrushes.WindowText, new Point( 100, 250 ) ); 
  4. Draw your oval around the text. Note: play around with the numbers to make the oval to the correct size that you want.
    //I am drawing a oval around my text.
    graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360); 
  5. Set the Content Type to jpg and then write your image to the response stream.
    //Set the content type
    Response.ContentType="image/jpeg"; 
    //Save the new image to the response output stream.
    bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg); 
  6. Clean up.
    //Clean house.
    graphicImage.Dispose();
    bitMapImage.Dispose();
下载前必看:https://pan.quark.cn/s/a4b39357ea24 在本资料中,将阐述如何运用JavaScript达成单击下拉列表框选定选项后即时转向对应页面的功能。 此种技术适用于网页布局中用户需迅速选取并转向不同页面的情形,诸如网站导航栏或内容目录等场景。 达成此功能,能够显著改善用户交互体验,精简用户的操作流程。 我们须熟悉HTML里的`<select>`组件,该组件用于构建一个选择列表。 用户可从中选定一项,并可引发一个事件来响应用户的这一选择动作。 在本次实例中,我们借助`onchange`事件监听器来实现当用户在下拉列表框中选定某个选项时,页面能自动转向该选项关联的链接地址。 JavaScript里的`window.location`属性旨在获取或设定浏览器当前载入页面的网址,通过变更该属性的值,能够实现页面的转向。 在本次实例的实现方案里,运用了`eval()`函数来动态执行字符串表达式,这在现代的JavaScript开发实践中通常不被推荐使用,因为它可能诱发安全问题及难以排错的错误。 然而,为了本例的简化展示,我们暂时搁置这一问题,因为在更复杂的实际应用中,可选用其他方法,例如ES6中的模板字符串或其他函数来安全地构建和执行字符串。 具体到本例的代码实现,`MM_jumpMenu`函数负责处理转向逻辑。 它接收三个参数:`targ`、`selObj`和`restore`。 其中`targ`代表要转向的页面,`selObj`是触发事件的下拉列表框对象,`restore`是标志位,用以指示是否需在转向后将下拉列表框的选项恢复至默认的提示项。 函数的实现通过获取`selObj`中当前选定的`selectedIndex`对应的`value`属性值,并将其赋予`...
<think>好的,我需要帮助用户了解如何使用Python的Pillow库在图片上添加文字。首先,我需要确认用户的需求:他们想通过Pillow库在图片上添加文字,并需要示例代码。用户可能已经知道Pillow的基本安装,但可能需要具体的步骤和代码示例。 首先,我应该检查Pillow库的安装方法,确保用户已经正确安装。根据引用[3],用户可以从PyPI获取最新版本,特别是Windows用户可能需要二进制文件。所以,在回答中应该提到安装步骤,比如使用pip安装。 接下来,用户需要具体的代码示例。根据引用[2],Pillow可以用于合并图片,比如添加水印或logo,这也包括添加文字。因此,我需要解释如何打开图片,使用ImageDraw模块创建绘图对象,然后使用text()方法添加文字。 我需要考虑设置字体、颜色、位置等参数。字体可能需要指定路径,特别是用户可能需要下载.ttf文件,比如使用默认的Arial字体或者提供其他字体选项。如果用户未指定字体,Pillow可能无法正确渲染文本,所以需要提醒这一点。 此外,文字的位置坐标(xy)可能需要调整,用户可能需要根据图片尺寸来动态计算,比如居中文本。这里可以给出一个示例,计算文本的宽度和高度,然后调整位置。 还需要提到如何保存修改后的图片,使用save()方法,并可能支持不同的格式。 最后,用户可能需要进一步的自定义,比如调整字体大小、颜色、透明度等,所以在相关问题上可以建议这些方向。 现在,整理步骤:安装Pillow,导入模块,打开图片,创建Draw对象,定义字体,添加文本,保存图片。示例代码需要包括这些步骤,并处理可能出现的异常,比如字体文件未找到。 可能的问题点:字体路径在不同操作系统下的处理,比如在Linux下可能使用/usr/share/fonts,而Windows可能在C:\Windows\Fonts。需要提醒用户根据实际情况调整路径。 检查是否需要处理透明度或图层混合,但基础示例可能不需要这些,高级用户可以自行探索。 总结回答结构:先介绍步骤,给出示例代码,然后解释代码各部分,最后提供相关问题和引用。</think>要使用Pillow库在图片上添加文字,可通过以下步骤实现: ### 步骤说明 1. **安装Pillow库** ```bash pip install Pillow ``` 2. **基础代码框架** ```python from PIL import Image, ImageDraw, ImageFont # 打开图片 image = Image.open("input.jpg") # 创建绘图对象 draw = ImageDraw.Draw(image) # 设置字体(需指定.ttf文件路径) font = ImageFont.truetype("arial.ttf", 36) # 添加文字(参数:坐标、内容、颜色、字体) draw.text((50, 50), "Hello Pillow", fill="white", font=font) # 保存结果 image.save("output.jpg") ``` ### 详细说明 - **字体设置**:必须使用`.truetype()`加载字体文件。若未安装字体,可从系统字体目录(如Windows的`C:\Windows\Fonts`)复制.ttf文件到项目目录[^3] - **坐标系统**:原点`(0,0)`在左上角,可通过`image.size`获取图片尺寸动态计算居中位置: ```python text_width, text_height = draw.textsize("Hello Pillow", font=font) x = (image.width - text_width) // 2 y = (image.height - text_height) // 2 ``` ### 完整示例(含居中文字与抗锯齿) ```python from PIL import Image, ImageDraw, ImageFont def add_centered_text(input_path, output_path, text, font_size=40, color=(255,255,255)): img = Image.open(input_path) draw = ImageDraw.Draw(img) try: font = ImageFont.truetype("arial.ttf", font_size) except IOError: font = ImageFont.load_default() # 备选方案 text_width, text_height = draw.textsize(text, font=font) x = (img.width - text_width) // 2 y = (img.height - text_height) // 2 # 添加黑色描边增强可读性 draw.text((x-1, y-1), text, fill="black", font=font) draw.text((x+1, y), text, fill="black", font=font) draw.text((x, y), text, fill=color, font=font) img.save(output_path) # 使用示例 add_centered_text("background.jpg", "result.jpg", "WATERMARK", color=(255,0,0)) ``` ### 效果增强技巧 - 通过多层文字绘制实现描边效果 - 使用`.alpha_composite()`叠加半透明水印[^2] - 调整`font`参数中的`stroke_width`实现文字边框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值