目录

简介

使用场景

效果展示

​编辑

开发环境

如何使用

demo源码及文件结构

类结构

相关方法

结语


简介

PhotoView是OpenAtom OpenHarmony(简称“OpenHarmony”)系统的一款图片缩放及浏览的三方组件,用于声明式应用开发,支持图片缩放、平移、旋转等功能。

使用场景

PhotoView为广大OpenHarmony应用开发者在处理图片时,提供了很大的便利。当开发者需要对图片进行浏览、查看等处理时,只需要导入PhotoView三方组件,然后调用相关的接口就能实现效果,例如基于大禹200开发板开发的图库应用,就使用到了PhotoView三方库去处理图片。

效果展示

开发环境

安装IDE:支持DevEco Studio 3.0 Beta3(Build Version 3.0.0.901)及以上版本。

安装SDK:支持OpenHarmony API version 9 及以上版本

如何使用

1.下载PhotoView组件,在page页面导入

npm install @ohos/photoview --save;
import {PhotoView} from '@ohos/photoview';

2.生成Photo View

2.1创建model对象

@State data: PhotoView.Model = new
PhotoView.Model();

2.2设置图片源

aboutToAppear() {this.data
.setImageResource($rawfile('wallpaper.jpg'))
.setScale(1, false)
.setImageFit(ImageFit.Contain)
.setOnPhotoTapListener({onPhotoTap(x:number,y:number){}
})
}

3.使用示例:

平移、缩放、旋转核心思想都是通过手势触发,然后获取图片变换前后的偏移量,最后更新图片的矩阵Matrix实现效果。

这里以平移为例说明:

PinchGesture() // 平移手势接口.onActionStart((event) => {
 console.log('photo PinchGesture start:' +
this.model.animate)
 }).onActionUpdate((event) => { console.info("photo pin:" +
JSON.stringify(event))if (this.model.isZoom) { var currentScale: number =
this.model.scale + event.scale - 1;
 console.log('photo PinchGesture update:'
+ currentScale)if (currentScale >
this.model.scaleMax) { this.model.scale = this.model.scaleMax
 } else if (currentScale <
this.model.scaleMin) { this.model.scale = this.model.scaleMin
 } else { this.model.scale = currentScale;
    }if (this.model.animate) { this.zoomTo(this.model.scale,
this.model.mZoomDuration)
 } else { this.model.updateMatrix();// 通过此方法更新矩阵值
 }
 }
 }).onActionEnd((event) => {if (this.model.scale <
this.model.scaleMin) { this.model.scale = this.model.scaleMin
 }if (this.model.scale >
this.model.scaleMax) { this.model.scale = this.model.scaleMax
 }
 this.model.isZooming = (this.model.scale
> 1)if (this.model.matrixChangedListener !=
null) {this.model.matrixChangedListener.onMatrixChanged(this.model.rect)
 }if (this.model.scaleChangeListener != null)
{this.model.scaleChangeListener.onScaleChange(this.model.scale, 0, 0)
 }
 })

调用UpdateMatrix( )方法

public updateMatrix():
void { this.rect.left = this.componentWidth / 2 -
(this.componentWidth * this.scale) / 2 + this.offsetX;
 this.rect.right = this.componentWidth / 2 +
(this.componentWidth * this.scale) / 2 + this.offsetX;
 this.rect.top = this.componentHeight / 2 -
(this.sHeight / 2) * this.scale + this.offsetY;
 this.rect.bottom = this.componentHeight / 2 +
(this.sHeight / 2) * this.scale + this.offsetY;
 this.matrix = Matrix4.identity().rotate({ x: 0, y: 0, z: 1, angle:
this.rotateAngle }).translate({ x: this.offsetX, y:
this.offsetY }).scale({ x: this.scale, y: this.scale,
centerX: this.centerX, centerY: this.centerY })
}

Matrix已更新,此时给图片更新矩阵即可。

Image(this.model.src).alt(this.model.previewImage).objectFit(this.model.imageFit).transform(this.model.matrix) // 传递更新后的矩阵值.interpolation(ImageInterpolation.Low)

demo源码及文件结构

下载地址https://gitee.com/openharmony-sig/PhotoView-ETS

文件目录结构如下

|---- PhotoView-ETS |---- entry
|     |---- pages  # 示例代码文件夹       |---- photoView
|     |---- components  # 库文件夹
|     |     |---- PhotoView.ets  #自定义组件
|     |     |---- RectF.ets  # 区域坐标点数据封装
|     |---- README.md  # 安装使用方法

类结构

相关方法

结语

通过本篇文章介绍,您对OpenHarmony  PhotoView组件应该有了初步的了解。我们所有的源码和指导文档都已经开源,如果您对本篇文章内容以及所实现的Demo感兴趣,可以根据本篇文章介绍自行下载OpenHarmony PhotoView源码进行研究和使用。同时也欢迎更多开发者与我们共享开发成果,分享技术解读与经验心得。(OpenHarmony PhotoView源码下载链接https://gitee.com/openharmony-sig/PhotoView-ETS)

PhotoView——支持图片缩放、平移、旋转的一个优雅的三方组件相关推荐

  1. PyQt5实现图片缩放、旋转

    下面讲述PyQt5实现图片缩放.旋转的两种方式 第一种基于鼠标滚轮缩放,左右键移动 pyqt5实现过程如下 # -*- coding: utf-8 -*-from PyQt5 import QtCor ...

  2. 20P46 Premiere预设800种干扰缩放平移旋转分割拉伸全景透视扭曲炫光视频无缝转场

    20P46 Premiere预设800种干扰缩放平移旋转分割拉伸全景透视扭曲炫光视频无缝转场 模版信息: 适用软件:Premiere Pro CC 2015.3 或更高版本 使用插件:无需外置插件 分 ...

  3. 图片缩放、旋转、加水印

    图片缩放.旋转.加水印 学习java的案例,实现图片缩放.旋转.加水印功能,测试下来没问题,目前,水印的添加更新功能最好能通过选择窗口,这块还未实现,待后续更新.先对已有的功能附上代码:/ packa ...

  4. java马赛克_java实现图片缩放、旋转和马赛克化

    本文是作者结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化. 不多说,上代码: package deal; import java.awt.Color; import jav ...

  5. java图片马赛克_java实现图片缩放、旋转和马赛克化

    本文是作者结合网上的一些资料封装的java图片处理类,支持图片的缩放,旋转,马赛克化. 不多说,上代码: package deal; import java.awt.Color; import jav ...

  6. mac下使用命令行工具sips实现单个或批量图片缩放、旋转、翻转和格式转换

    sips是mac下的一个命令行工具,可以实现单个批量图片裁剪.缩放.旋转.翻转和格式转换. 指定宽度为600像素,高度自适应缩放 sips -Z 600 test.jpg 批量指定宽度为600像素,并 ...

  7. java 文字水印 旋转_利用Thumbnailator轻松实现图片缩放、旋转与加水印

    概述 Thumbnailator 是一个开源的 Java 项目,它提供了非常简单的 API 来对图片进行缩放.旋转以及加水印的处理. 有多简单呢?简单到一行代码就可以完成图片处理.形式如下: Thum ...

  8. h5移动端vue手势插件,元素图片缩放、旋转拖拉拖拽手势事件

    h5手势拖拽,缩放等功能插件vue-hand-mobile的使用 (1)插件介绍 (1-1)使用建议 (2)安装 (3)引入 (4)使用 (5)手势事件 轻拍 长按 拖动 快滑 两指缩放 两指旋转 ( ...

  9. QT学习笔记(三)——vs2019+Qt实现打开影像并以鼠标为中心用滚轮控制图片缩放

    vs2019+Qt实现打开影像并以鼠标为中心用滚轮控制图片缩放 之前写了一个博客讲怎么显示一张影像,那个是基于Qpainter的 今天使用QLabel来显示影像,并且用鼠标滚轮控制缩放. 关于图像的打 ...

最新文章

  1. pandas中的3种基本数据类型介绍
  2. Java的四种引用,强弱软虚,用到的场景
  3. 请解释和、|和||的区别?
  4. Flash的层叠顺序问题(z-index)
  5. java网络编程与分布式计算_Java_net Java网络编程与分布式计算 - 下载 - 搜珍网
  6. yii_wiki_145_yii-cjuidialog-for-create-new-model (通过CJuiDialog来创建新的Model)
  7. Mybatis之设计模式之装饰者模式
  8. 修改驱动器重定向显示格式
  9. 华为机试HJ91:走方格的方案数
  10. Datetime 24小时制
  11. WindowsServer2012史记2-从03域控升级至2012
  12. go语言strings包
  13. MySQL Buffer Pool缓冲池总结
  14. Rocket Kitten 报告
  15. struct template 函数 特化
  16. c++实现n阶行列式计算
  17. c语言1076素数,九度OJ 1076:N的阶乘 题解
  18. HTML+CSS+JS体育网页制作 DW静态网页设计(篮球NBA 5页 带psd文件 )
  19. 微信公众号页面开发记录
  20. DEM文件投影/基准面转换出现的问题

热门文章

  1. android:scaletype没作用,ImageView的属性android:scaleType的作用分析
  2. ubuntu18.04配置国内apt-get源
  3. 势如破竹!169 篇论文带你看 BERT 在 NLP 中的 2019 年!
  4. java判断telnet通不通_(转)测试端口通不通(四种方法)
  5. What is co-operating?
  6. [js] cloneNode
  7. android 日历view,CalendarView
  8. pic12f508c语言程序,PIC烧写器(QL-PIC280编程器)
  9. 纯前端实现复杂表格数据的导出——XLSX+FileSaver
  10. java word转成表格_java将Word/Excel/PDF文件转换成HTML整理