HarmonyOS实战开发-拼图、如何实现获取图片,以及图片裁剪分割的功能。

介绍

该示例通过@ohos.multimedia.image和@ohos.multimedia.mediaLibrary接口实现获取图片,以及图片裁剪分割的功能。

效果预览

在这里插入图片描述
使用说明:

  1. 使用预置相机拍照后启动应用,应用首页会读取设备内的图片文件并展示获取到的第一个图片,没有图片时图片位置显示空白;
  2. 点击Start开始后,时间开始倒计时,在规定时间内未完成拼图则游戏结束。在游戏中,玩家点击Restart进行游戏重置;
  3. 点击开始游戏后,玩家可以根据上方的大图,点击灰格周围的图片移动,点击后图片和灰格交换位置,最终拼成完整的图片;
  4. 不在游戏中时,玩家可以点击上方大图,选择自定义图片来进行拼图游戏。

工程目录

VideoComponent/src/main/ets/components
|---common
|   |---ImagePicker.ets                     // 图片选择
|---model
|   |---GameRules.ts                        // 游戏规则
|   |---ImageModel.ts                       // 图片操作
|   |---Logger.ts                           // 日志
|   |---PictureItem.ts                      // 分解的图片
|---pages
|   |---Index.ets                           // 首页

具体实现

  • 游戏中图片裁剪分割的效果实现在ImageModel中
  • 获取本地图片:首先使用getMediaLibrary获取媒体库实例,然后使用getFileAssets方法获取文件资源,最后使用getAllObject获取检索结果中的所有文件资产方便展示;
  • 裁剪图片准备:裁剪图片需要使用@ohos.multimedia.image接口,裁剪前需要申请图片编辑权限,使用requestPermissionsFromUser申请
  • 图片编辑:首先使用createImagePacker创建ImagePacker实例,然后使用fileAsset.open打开文件,调用createImageSource接口创建图片源实例方便操作图片,接下来使用getImageInfo方法获取图片大小便于分割,最后使用createPixelMap方法传入每一份的尺寸参数完成图片裁剪。

相关权限

ohos.permission.READ_MEDIA

ohos.permission.MEDIA_LOCATION

依赖

不涉及。

约束与限制

本示例仅支持标准系统上运行;

本示例已适配API version 9版本SDK,版本号:3.2.11.9; 3.本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400, built on April 7, 2023)才可编译运行。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/BasicFeature/Media/GamePuzzle/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→HarmonyOS教学视频:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等…视频教程

在这里插入图片描述
在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF: 获取完整版白皮书方式请点击→https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG?u=a42c4946d1514235863bb82a7b2ac128

在这里插入图片描述

鸿蒙 (Harmony OS)开发学习手册→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

一、入门必看

1.应用开发导读(ArkTS)
2………
在这里插入图片描述

二、HarmonyOS 概念→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.系统定义
2.技术架构
3.技术特性
4.系统安全
5…

在这里插入图片描述

三、如何快速入门?→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3…

在这里插入图片描述

四、开发基础知识→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
在这里插入图片描述

五、基于ArkTS 开发→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
在这里插入图片描述

更多了解更多鸿蒙开发的相关知识可以参考:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go的option模式

go的option模式 1.函数option 把option定义为函数。 package mainimport "fmt"// ServerConfig 定义服务器配置 type ServerConfig struct {Port intTimeout int }// Option 定义函数选项类型 type Option func(*ServerConfig)// WithPort 设置服务器端口 // 这…

word中插入mathtype版的符号后,行间距变大解决方法

问题 解决方法 选中该段,设置固定值行距。如果是宋体,小四,1.25行距,那么固定值就为20磅。 成功解决。

ELK 企业级日志分析 ELFK

一 ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源 工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 1 ElasticSearch: 是基于Lucene(一个全文检索引擎的…

微服务支持平台--限流算法

微服务支持平台–限流 限流算法 限流算法: 算法含义备注令牌桶以恒定速度往一个桶内增加令牌,当桶内令牌满了后,就停止增加令牌适用于流量比较平稳的情况,只能承受小的突发流量滑动窗口将时间周期分为N个小周期,分别记…

Java后端基础知识(String类型)

String类的创建方式 String的特点 1.引用数据类型 2.是final类,一旦创建内容不可修改 3.String类对象相等的判断用equals()方法完成,是判断地址数值 String的创建方式 1.直接创建 String str"hello";注意&#xff…

Android进程类型及优先级(前台进程/可见进程/服务进程/缓存进程/空进程)

Android进程类型及优先级 一、Android 进程优先级 Android 进程优先级 :前台进程 > 可见进程 >服务进程 >缓存进程 > 空进程 ; 关键优先级进程 : 活动进程 ;高优先级进程 : 可见进程 , 服务进程 ;低优先级进程 : 后台进程 , 空进程 ; Android 系统中会尽量保证…

09 Php学习:数组和排序

数组概念 在PHP中,数组是一种复合数据类型,用于存储多个值。以下是关于PHP数组的详细解释: 索引数组:索引数组是最基本的数组类型,其中每个元素都有一个唯一的数字索引,从0开始递增。 关联数组&#xff…

Android Studio开发学习(七)———RelativeLayout(相对布局)

在上期中我们对LinearLayout进行了详细的解析,LinearLayout也是我们用的比较多的一个布局,更多的时候更钟情于它的 weight(权重) 属性,等比例划分,对屏幕适配还是 帮助蛮大的;但是使用LinearLayout的时候也有一个问题,就是当界面比…

【蓝桥杯每日一题】4.11 更小的数(不用区间DP)

题目来源: 蓝桥杯 2023 省 A]更小的数 - 洛谷 这题只需要用到双指针就OK~ 思路1: 翻转数组的子数组,然后进行比较大小将翻转后的数组存储在字符串 k k k中,然后将字符串 k k k与字符串 a a a进行逐一元素比较(因为…

橘子学JDK之JMH-02(BenchmarkModes)

一、案例二代码 这次我们来搞一下官网文档的第二个案例,我删除了一些没用的注释,然后对代码做了一下注释的翻译,可以看一下意思。 package com.levi;import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import …

MySQL优化常见面试题

文章目录 1.在MySQL中如何定位慢查询2.SQL语句执行很慢,如何分析3.什么是索引4.索引的底层结构了解过嘛5.B树和B树的区别是什么6.什么是聚簇索引什么是非聚簇索引7.什么是回表查询8.什么是覆盖索引9.MySQL超大分页如何处理10.索引创建原则有哪些11.什么情况下索引会…

【算法练习】29:插入排序学习笔记

一、插入排序的算法思想 原理:将一个无序的数据序列逐步转化为有序序列。算法将待排序的数组分为两个部分已排序部分和未排序部分。 时间复杂度:插入排序的时间复杂度在最坏、平均和最好情况下的表现相同,均为 ,其中 n 是待排序数…

极狐GitLab对接OAuth2实现SSO

本文作者:极狐(GitLab) 高级解决方案架构师 武让 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 企…

Python处理PDF:在PDF文档中插入页眉和页脚

在处理篇幅较长、结构复杂的PDF文档时,页眉和页脚的设计与插入就显得尤为重要。它们不仅扮演着美化文档、提升专业度的角色,更承担了导航指引、信息标注的重要功能。 页眉通常用于展示文档的标题或章节名称,有助于读者在翻阅过程中迅速定位所…

Java - 赋值运算符

在这个实战中,我们将学习赋值运算符的使用方法。首先,我们将介绍简单赋值运算符的基本概念和语法格式。然后,我们将通过案例演示来加深对赋值运算符的理解。接下来,我们将对比Java和Python这两种不同的编程语言,探讨它…

spring rest

controller 类的注解 Controller RequestMapping(“/api/ads”)类的方法的注解 ResponseBody GetMapping(“/postAds/{ad_id}”) - 查 PostMapping() - 增 PutMapping() - 改 DeleteMapping() PatchMapping()类的方法的参数的注解 PathVariable() RequestBody() RequestParam()…

移动端网络库行业动态-整理

欢迎各位同行补充。 阿里: 2023.12 淘宝移动端统一网络库的架构演进和弱网优化技术实践 http://www.52im.net/thread-4470-1-1.html 网易: cronet 多端统一,2021.11 网易云音乐网络库跨平台化实践:https://segmentfault.com/a/1…

电能质量管理解决方案探讨 安科瑞 许敏

电能质量在线监测装置 本办法对发电企业(包括分布式电源)、电网企业、用电企业的电能质量管理均有明确要求,要求在发电企业并网点、电网企业非线性设施、用电企业公共连接点设置电能质量监测装置,这会促进市场对电能质量在线监测…

理解 编译和链接

目录 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理(预编译) 2.2 编译 2.2.1 词法分析: 2.2.2 语法分析 2.2.3 语义分析 2.3 汇编 2.4 链接 3. 运行环境 1. 翻译环境和运行环境 在ANSI C的任何一种实现中,存在两个不同…

Linux开发--进程

经典五问: 1.什么是程序?什么是进程? 从是否运行进行判断: gcc xxx -o pro,磁盘中生成的pro文件,就是程序 进程是程序一次运行活动 程序是静态的概念,进程是动态的概念。 2.如何查看系统中的进程: 在l…