当前位置: 首页 > news >正文

鸿蒙 图片处理:裁剪、缩放、旋转、翻转

本文同步发表于微信公众号,微信搜索程语新视界即可关注,每个工作日都有文章更新

一、图像处理

图像处理指对PixelMap进行相关的操作,主要包括:

类型说明
图像处理裁剪、缩放、偏移、旋转、翻转、设置透明度等
位图操作读写像素数据等

备注:本文介绍的是图像处理部分

开发前提

在进行图像变换操作前,需要先完成图片解码,获取PixelMap对象。

二、导入模块

import { image } from '@kit.ImageKit'; import { BusinessError } from '@kit.BasicServicesKit';

三、获取图片信息

在图像变换操作前,可以先获取图片的基本信息。

// 获取图片大小 pixelMap.getImageInfo().then((info: image.ImageInfo) => { console.info('info.width = ' + info.size.width); console.info('info.height = ' + info.size.height); }).catch((err: BusinessError) => { console.error("Failed to obtain the image pixel map information. And the error is: " + err); });

ImageInfo主要属性

属性说明
size.width图片宽度
size.height图片高度
isHdr是否为HDR图片

四、图像变换操作

4.1 裁剪(crop)

方法pixelMap.crop(region: Region)

参数说明

参数类型说明
xnumber裁剪起始点横坐标
ynumber裁剪起始点纵坐标
size.heightnumber裁剪高度(从上往下)
size.widthnumber裁剪宽度(从左到右)

示例:从(0,0)开始,裁剪400×400区域

// x:裁剪起始点横坐标0 // y:裁剪起始点纵坐标0 // height:裁剪高度400,方向为从上往下 // width:裁剪宽度400,方向为从左到右 pixelMap.crop({ x: 0, y: 0, size: { height: 400, width: 400 } });

4.2 缩放(scale)

方法pixelMap.scale(x: number, y: number)

参数说明

参数说明
x水平方向缩放比例(1为原大小,0.5为缩小一半,2为放大一倍)
y垂直方向缩放比例

示例:缩小为原来的0.5倍

// 宽为原来的0.5 // 高为原来的0.5 pixelMap.scale(0.5, 0.5);

4.3 偏移(translate)

方法pixelMap.translate(x: number, y: number)

参数说明

参数说明
x水平方向偏移量(正数向右,负数向左)
y垂直方向偏移量(正数向下,负数向上)

示例:向右向下各偏移100像素

// 向下偏移100 // 向右偏移100 pixelMap.translate(100, 100);

4.4 旋转(rotate)

方法pixelMap.rotate(angle: number)

参数说明

参数说明
angle顺时针旋转角度(度数)

示例:顺时针旋转90度

// 顺时针旋转90° pixelMap.rotate(90);

4.5 翻转(flip)

方法pixelMap.flip(horizontal: boolean, vertical: boolean)

参数说明

参数说明
horizontal是否水平翻转
vertical是否垂直翻转

示例:垂直翻转

// 垂直翻转 pixelMap.flip(false, true);

示例:水平翻转

// 水平翻转 pixelMap.flip(true, false);

4.6 设置透明度(opacity)

方法pixelMap.opacity(alpha: number)

参数说明

参数说明
alpha透明度值,取值范围0-1(0完全透明,1完全不透明)

示例:设置50%透明度

// 透明度0.5 pixelMap.opacity(0.5);

五、注意事项

5.1 操作顺序

图像变换操作会依次生效,不同的顺序会产生不同的最终效果。

// 先裁剪后缩放 vs 先缩放后裁剪,结果不同 pixelMap.crop({ x: 0, y: 0, size: { width: 400, height: 400 } }); pixelMap.scale(0.5, 0.5);

5.2 资源释放

图像变换操作完成后,建议释放不再使用的PixelMap资源。

pixelMap.release(); pixelMap = undefined;

鸿蒙PixelMap图像变换支持裁剪(crop)、缩放(scale)、偏移(translate)、旋转(rotate)、翻转(flip)、透明度(opacity)等操作,通过对应方法即可完成图像的几何变换,操作前需先解码获取PixelMap。

http://www.jsqmd.com/news/611581/

相关文章:

  • GTE中文嵌入模型保姆级教程:Web界面汉化、响应式适配与多用户会话隔离改造
  • FreeRTOS CLI实战:5分钟搞定GD32串口终端移植(附LED控制源码)
  • AI赋能低空气象:精准预报筑牢低空经济安全底座
  • 如何在Braft Editor中轻松调整行高与字间距:提升文本排版美感的实用指南
  • 2026年知名的精密仪器光电微型不锈钢弹簧/家用电器开关复位不锈钢弹簧/医疗级无磁性小不锈钢弹簧实力工厂推荐 - 品牌宣传支持者
  • nli-distilroberta-base多轮对话理解效果实测:追踪对话中的立场变化
  • 六足机器人DIY:从嘉立创开源项目到三角步态、四角步态的完整控制流程
  • 基于VMware的Meixiong Niannian画图引擎多环境测试平台
  • DownKyi:B站视频下载全攻略——从入门到精通的高效解决方案
  • 如何快速优化Windows系统:Dism++终极清理与维护指南
  • 简单三步:Phi-4-mini-reasoning轻量模型快速部署与入门实战
  • 2026年质量好的矿山机械重型螺旋弹簧/医疗器械微型螺旋弹簧品牌厂家哪家靠谱 - 品牌宣传支持者
  • 万象熔炉 | Anything XLGPU适配指南:A10/A100/V100集群批量生成部署
  • 【Cursor】从安装到精通:AI编程工具的高效使用指南
  • Coze-Loop企业级部署指南:高可用架构与GPU资源优化
  • AutoGLM-Phone-9B对比评测:轻量化多模态模型的实际优势分析
  • 手把手教你:在星图平台部署最强多模态Qwen3-VL:30B,并接入飞书实现智能对话
  • 2026年质量好的屏蔽铝塑复合带/屏蔽用铝塑复合带采购指南厂家怎么选 - 品牌宣传支持者
  • Qwen3-14B构建SpringBoot微服务:从设计到API代码生成
  • Qwen-Image-Edit与PID控制算法:工业图像处理应用
  • vLLM-v0.17.1一文详解:OpenAI兼容API的请求格式、流式响应与错误码
  • OpenClaw多模型切换:Qwen3-14b_int4_awq与Llama3任务性能对比
  • MATLAB仿真下虚拟磁链控制技术在直接功率控制与整流器、逆变器仿真中的应用
  • Ostrakon-VL-8B精彩案例分享:某连锁烘焙品牌货架陈列优化前后AI分析报告
  • tcp知识
  • 2026开源商城怎么选?从维护成本和安全性角度深度解析
  • OpenClaw技能扩展:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF实现公众号自动发布
  • TranslateGemma进阶技巧:三招提升专业文档翻译质量
  • AI智能体开发实战:从提示工程转向上下文工程的完整指南
  • OpenClaw多任务调度:千问3.5-9B并行处理技巧