如何在图片上写文字

ImageMagick--往图片上写文字 为了在文件上写文字,话费了一天的时间,都快崩溃了,其实可以有两种写法:一种是自己实现,对指定的点进行修改像素值,一种是直接用库中的函数进行写文字;当然所有人都希望用库中的函数,既方便又好用,但是事情的发展总是不如人意,我以为我直接写一个image.annotate("abcok",Geometry("100x100"));就能实现功能,谁知道总是运行错误,调了大半天,处于崩溃边缘,于是,在Magi 阅读详情

我们要处理一张图片,并不会直接在这张图片上直接进行处理,一般都会在内存中创建这张图片的copy,然后在这张copy上对图片进行处理

创建图片内存拷贝

  1. 根据原图创建大小一摸一样的空白图片。

      Bitmap bitmapCopy = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
    

    当然,创建的图片的副本尺寸也可以比原图不一样,

    Bitmap bitmapCopy = Bitmap.createBitmap(bitmap.getWidth()*1.5, bitmap.getHeight()*1.5, bitmap.getConfig());

    注:网络图片的话,可以通过Picasso来获取bitmap,一定要在子线程,耗时操作

      new Thread(){
                @Override
                public void run() {
                    super.run();
                    try {
                        bitmap_xk = Picasso.with(PreviewPicActivity.this).load(R.drawable.xk).resize(1536,768).get();
    
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
    
  2. 根据空白图片创建一个画布

     Canvas canvas = new Canvas(bitmapCopy);
    
  3. 创建画笔,设置画笔属性

     Paint paint = new Paint();
     paint.setColor(Color.parseColor("#000000"));
     paint.setTextSize(18);
     paint.setAntiAlias(true);//抗锯齿
    
  4. 临摹

    Matrix matrix = new Matrix();
    canvas.drawBitmap(bitmap(原图), matrix, paint);
    

至此,已经将一张图片copy到内存中

开始往照片上写字

如果文字很短,不需要换行
canvas.drawText()
当写的是多行文本时,如何控制换行—>StaticLayout
    //设置画笔
    TextPaint textPaint = new TextPaint();
    textPaint.setColor(Color.parseColor("#ffffff"));
    //确定祝福文字的大小,因为图片像素不一样,为了达到统一效果,按照图片像素来确定文字大小
    float textsize = (float) (bitmap.getHeight() * 0.1);
    textPaint.setTextSize(textsize);
    textPaint.setAntiAlias(true);

//文字换行最大宽度,在这里我们想让当文字超过图片宽度50%时,就换行
int msgMaxWidth = (int) (bitmap.getWidth() * 0.50);

StaticLayout layout = new StaticLayout(content, textPaint, msgMaxWidth,
            Layout.Alignment.ALIGN_NORMAL, 1.0F, 0.0F, true);
    canvas.save();
    canvas.translate(startX, startY);//从20,20开始画

    layout.draw(canvas);
    canvas.restore();//别忘了restore

public StaticLayout(CharSequence source, TextPaint paint,
    int width,  Alignment align, float spacingmult, float spacingadd,boolean includepad) 


source:文本内容
textPaint:画笔
width:layout的宽度,字符串超出宽度时自动换行。
Alignment:layout的对齐方式,有ALIGN_CENTER, ALIGN_NORMAL, ALIGN_OPPOSITE 三种。
spacingmult:相对行间距,相对字体大小,1.5f表示行间距为1.5倍的字体高度。
spacingadd:在基础行距上添加多少(实际行间距等于这两者的和)。
includepad:不懂,写true先

把内存中的图片保存到本地

  private void save(Bitmap bitmap_copy) {
        try {
            File file = new File(Environment.getExternalStorageDirectory(), "99999999999991.jpg");
            FileOutputStream stream = new FileOutputStream(file);
            bitmap_copy.compress(Bitmap.CompressFormat.JPEG, 100, stream);//100表示图片压缩质量,100为最高
            stream.close();
            Toast.makeText(PreviewPicActivity.this, "保存成功", Toast.LENGTH_SHORT).show();

        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(PreviewPicActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
        }
    }
Opencv在图片上写文字(hello) 分三步走:第一步,功能说明;第二步,结果图显示;第三步,API详解;第四步,代码展示(注释很详细,保证所有有C++基础的人都可以看懂。 第一步,功能说明:在图片上写入字。是不是很6呀。不多说了,直接上图。在效果图显示Hello。 第二步,结果图显示: 第三步,API详解:原型 void putText( Mat& img, const string& text, Point org, int fontFace,double fontScale, Scalar... 阅读详情

相关推荐

QT实现在图片上绘制文字的功能

QT实现在图片上绘制文字的功能

希望我的博客,能帮上你解决学习中工作中所遇到的问题 719

笔记,qt图片上加文字的方式

【代码】笔记,qt图片上加文字的方式。

qq_45339188的博客 555

android图片上添加文字

实现了地图上A-Z字母的图片创建工作,后期工作根据信息在地图上标注在进一步实现中

qt怎么在图片上添加文字

你可以使用 Qt 的 QPainter 类来在图片上添加文字。首先,你需要创建一个 QPixmap 对象,并使用 QPainter 类的构造函数将其作为参数传入。然后,你可以使用 QPainter 的 drawText() 函数在图片上绘制文本。 例如: QPixmappixmap(100, 100); pixmap.fill(Qt::white); QPainter painter(&...

weixin_42576410的博客 1619

OPENCv 在图片上写字,各种格式

OPENCV内容,可以在图片的任意位置书写自己想要的字体,并支持多种图形,椭圆,圆,多边形等等!OPENCV初学者必备!

在图片上添加文字源码

可在照片上添加文字,可以移动、旋转和缩放等特效功能,参考着不错。

Js 图片 (或者任意元素) 添加文字

使用js动态添加文字

fwk1010的专栏 9143

Android-Android画板控件可以写字画画并生成图片

Android画板控件,可以写字画画并生成图片

关于用C++的CXGraph在图上任意位置添加说明性文字

在使用CXGraph作图的时候,有时候会遇到需要给一条曲线添加标注或者需要在整个图上添加一些标注。第一步,初始化CXGraphm_Graph.Create(_T("XGraph"),_T(""), WS_CHILD | WS_VISIBLE, clRect, this, 23119 );第二步,给CXGraph添加数据m_Graph.SetData (m_Values[0], VALCOUNT,...

yuexin2的专栏 815

android 在imageview上的指定位置添加图片 图片尺寸自适应

在imageview上的指定位置添加另一个iamgeview,并实现等比例缩放,图片自适应

Cadence IC618/Spectre231安装避坑指南:详解环境变量配置与License管理那些事儿

本文深入解析Cadence IC618/Spectre231安装过程中的环境变量配置与License管理难题,提供从变量冲突解决到高效License管理的实用方案。针对常见的64位标识冲突、路径污染及License服务器连接问题,给出具体诊断步骤和优化建议,帮助用户构建稳定可靠的EDA环境。

weixin_33737134的博客 616

关于android在图片上写文字的问题

我要在图片中间位置写文字!   有好多种办法: 1.制作图片时直接制作集中带文字的,贴图即可! 2.利用控件, textview啥的! 3.-- 绘制底图,再绘制文字     我用了一种最笨的 !还遇到了一个问题:canvas.drawText() 起点不对!不是左上,是左下!   举例: 我要在登陆图片上写 登陆或未登录。   @Override  protecte

快慢机的地盘 5680

STM32F407VET6与CH395Q串口通信实战:从零搭建以太网客户端(附完整代码)

本文详细介绍了基于STM32F407VET6微控制器与南京沁恒微CH395Q以太网芯片,通过串口通信从零搭建TCP客户端应用的完整实战过程。内容涵盖硬件连接、驱动层设计、基于FreeRTOS的任务实现以及核心调试技巧,并提供了完整的代码示例,帮助嵌入式开发者快速实现设备联网功能。

weixin_29179311的博客 417

Java之如何在图片上写上文字

在本文中,我们将探讨如何利用Java在图片上添加文字。有时候,我们需要在图片中注明一些重要信息,比如添加水印、标注图片内容等。Java提供了强大的图形处理能力,使得在图片上添加文字变得非常简单。在接下来的内容中,我们将介绍如何使用Java的图形库来实现这一功能,并提供相应的示例代码和详细解释。我们从读取图片、创建绘图对象、设置字体和颜色、添加文字,一直到保存修改后的图片,逐步介绍了实现这一功能的关键步骤。在这个示例中,我们首先读取了原始的图片文件,然后创建了一个。对象,用于在图片上绘制。

m0_61891910的博客 2233

航空机载总线网络概述

1.机载总线网络概述 现代战斗机的航空电子系统是航空电子技术经历了半个多世纪的漫长演变和不断进步的结果。航空电子系统结构的每次变化,其核心的机载总线网络技术也不断跨上新台阶,而且每次变革都能使飞机性能得到大幅提升。现代飞机的飞行与作战任务包括起飞、巡航、飞行控制、目标搜索、识别跟踪、火控计算、武器投射、制导、电子战、通信等,都需要航空电子系统承担,航空电子系统是现代战斗机的“大脑”和“神经中枢”,机载总线网络则是其关键的“神经网络”。在机载通讯领域发展过程中,具有代表性的典型总线有ARINC429、1553

qq_41854911的博客 1万+

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

dify1.3.1应用服务与数据服务分离,附件及插件包迁移至minio,实现离线部署,保证插件正常运行

Time_1023的博客 1874

Java图片写文字

public void addWaterMarkByResource(String resourcePath, String tarImgPath, String waterMarkContent, Color markContentColor, Font font,int x,int y) { try { System.out.println(...

zhangwenjie1105的专栏 411

若依(RuoYi)框架从零到部署:Spring Boot+Vue权限系统完整配置指南

在Java企业级应用开发中,Spring Boot作为构建微服务和单体应用的基石,极大地简化了项目初始化和配置流程。其核心原理在于通过自动配置和起步依赖,快速整合数据访问、安全认证、缓存等常用模块,显著提升开发效率。这一技术价值在需要快速构建后台管理系统的场景中尤为突出,例如权限管理、用户角色分配等通用需求。若依(RuoYi)框架正是基于Spring Boot和Vue.js的优秀实践,它封装了RBAC权限模型、代码生成器等高频功能,提供了开箱即用的解决方案。本文聚焦于若依框架的【环境配置】与【项目部署】,通

weixin_33984032的博客 457

基于pytesseract自写的OCR图片转文字小工具

实现代码主要使用pytesseract依赖

Autumn_horse的博客 612

(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.youkuaiyun.com/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}

江南才尽江南山,年少无知年少狂! 1025

看完这篇你就能讲解LLC软开关:一文秒懂 ZVS 和 ZCS 到底啥意思!

想要 MOS 管ZVS 好实现➜ 把工作频率保持在 fr1 或更高。想让整流二极管也ZCS 实现➜ 频率就别高过 fr1。设计磁性元件时,一定要计算好 Lr、Lm、Cr 的值,这直接决定你 fr、fr1 是多少!LLC 的软开关技术不是“魔法”,是电感电容+频率控制的精妙组合;fr1 就像黄金分割点,整流和开关都能“刚刚好”;不是所有软开关都能同时实现,要看你在频率曲线的哪一段!

weixin_43199439的博客 1546

imagemagick向图片中写文字

命令: mogrify -font Arial -pointsize 24 -fill yellow -weight bolder -annotate +20+100 “hello world zxl” /Users/zhangxiaolong/Documents/imagemagic/example/hi.jpg-font 后面是字体如果你使用的字体不存在时,该命令会报异常信息 conv

工匠解码 7758

【读代码】从claude skills到superpowers项目

最近claude skills成了大热门,今天一起看下GitHub 上的开源技能框架,他将“工作流”封装为“技能” (Skills)。本文尝试剖析该项目的技能粒度定义、多技能关联架构、应用逻辑等。与传统的 Function Calling 不同,Superpowers 中的 Skill 定义粒度并非“原子操作”,而是**“认知模式” (Cognitive Mode) 或“工作阶段”**。

kakaZhui的博客 1923

cegui图片文字写屏

cegui 图片 文字 旋转 写屏 GeometryBuffer

howlet2的专栏 2501

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

html中在图片上写文字,用HTML代码在图片上写字

效果一:文字居中cellSpacing=0 cellPadding=0 width=410 align=centerbackground=http://bbs.guqu.net/UploadFile/2005-1/200512211045825.gifborder=0> face=华文行楷 color=redsize=7>百年爱情文字在图片中的位置。由中的align=center决...

weixin_42097668的博客 2815

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java在图片下方写文字_Java画图给图片底部添加文字标题

Java画图 给图片底部添加文字标题需求给图片底部添加文字编号import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import java.awt.font.FontRenderContext;import ...

weixin_39942637的博客 1091

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: canvas drawText如何换行
下一篇: 弹出、收缩的菜单
Android_Study_OK
博客等级 码龄11年 91粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值