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

我的网站模板下载阿里云 装wordpress

我的网站模板下载,阿里云 装wordpress,wordpress访客统计插件,wordpress更改用户名密码鸿蒙HarmonyOS开发往期必看#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线#xff01;#xff08;从零基础入门到精通#xff09; 介绍 本示例将原图手指划过的区域分割成若干个大小一致的小方格…鸿蒙HarmonyOS开发往期必看 HarmonyOS NEXT应用开发性能实践总结 最新版“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线从零基础入门到精通 介绍 本示例将原图手指划过的区域分割成若干个大小一致的小方格然后获取每个小方格中的像素点的平均色彩数值使用获取到的平均色彩数值替换该方格中所有的像素点。最后使用createPixelMapSync接口将新的像素点数据写入图片即可实现原始图片的局部马赛克处理。 效果图预览 使用说明 进入页面手指划过图片的某一个区域即可将该区域马赛克处理。点击底部的“恢复原图”按钮将恢复为原图。 实现思路 获取原始图片信息将原始图片设置为可编辑状态。 /** * 获取图片内容 */ Concurrent async function getImageContent(imgPath: string, context: Context): PromiseUint8Array | undefined {// 获取resourceManager资源管理const resourceMgr: resourceManager.ResourceManager context.resourceManager;// 获取rawfile中的图片资源const fileData: Uint8Array await resourceMgr.getRawFileContent(imgPath);return fileData; }/** * 获取原始图片信息 */ async getSrcImageInfo(): Promisevoid {// TODO: 性能知识点使用new taskpool.Task()创建任务项传入获取图片内容函数和所需参数const task: taskpool.Task new taskpool.Task(getImageContent, MosaicConstants.RAWFILE_PICPATH, getContext(this));try {const fileData: Uint8Array await taskpool.execute(task) as Uint8Array;// 获取图片的ArrayBufferconst buffer fileData.buffer.slice(fileData.byteOffset, fileData.byteLength fileData.byteOffset);// 获取原图imageSourcethis.imageSource image.createImageSource(buffer);// TODO 知识点 将图片设置为可编辑const decodingOptions: image.DecodingOptions {editable: true,desiredPixelFormat: image.PixelMapFormat.RGBA_8888,}// 创建PixelMapthis.pixelMapSrc await this.imageSource.createPixelMap(decodingOptions);} catch (err) {console.error(getSrcImageInfo: execute fail, err: (err as BusinessError).toString());} }保存图片的原始尺寸及在屏幕的显示区域。 // 读取图片信息const imageInfo: image.ImageInfo await this.pixelMapSrc!.getImageInfo();// 获取图片的宽度和高度this.imageWidth imageInfo.size.width;this.imageHeight imageInfo.size.height;// 获取屏幕尺寸const displayData: display.Display display.getDefaultDisplaySync();// 计算图片的显示尺寸this.displayWidth px2vp(displayData.width);this.displayHeight this.displayWidth * this.imageHeight / this.imageWidth;获取手指按下和移动时的坐标手指移动时执行马赛克任务。 PanGesture().onActionStart((event: GestureEvent) {const finger: FingerInfo event.fingerList[0];if (finger undefined) {return;}this.startX finger.localX;this.startY finger.localY;}).onActionUpdate((event: GestureEvent) {const finger: FingerInfo event.fingerList[0];if (finger undefined) {return;}this.endX finger.localX;this.endY finger.localY;// 执行马赛克任务await this.doMosaicTask(this.startX, this.startY, this.endX, this.endY);this.startX this.endX;this.startY this.endY;})在马赛克任务中处理坐标转换问题后执行马赛克处理函数applyMosaic。 async doMosaicTask(offMinX: number, offMinY: number, offMaxX: number, offMaxY: number): Promisevoid {// TODO 知识点将手势移动的起始坐标转换为原始图片中的坐标offMinX Math.round(offMinX * this.imageWidth / this.displayWidth);offMinY Math.round(offMinY * this.imageHeight / this.displayHeight);offMaxX Math.round(offMaxX * this.imageWidth / this.displayWidth);offMaxY Math.round(offMaxY * this.imageHeight / this.displayHeight);// 处理起始坐标大于终点坐标的情况if (offMinX offMaxX) {const temp offMinX;offMinX offMaxX;offMaxX temp;}if (offMinY offMaxY) {const temp offMinY;offMinY offMaxY;offMaxY temp;}// 获取像素数据的字节数const bufferData new ArrayBuffer(this.pixelMapSrc!.getPixelBytesNumber());await this.pixelMapSrc!.readPixelsToBuffer(bufferData);// 将像素数据转换为 Uint8Array 便于像素处理let dataArray new Uint8Array(bufferData);// TODO: 性能知识点使用new taskpool.Task()创建任务项传入任务执行函数和所需参数const task: taskpool.Task new taskpool.Task(applyMosaic, dataArray, this.imageWidth, this.imageHeight, MosaicConstants.BLOCK_SIZE,offMinX, offMinY, offMaxX, offMaxY);try {taskpool.execute(task, taskpool.Priority.HIGH).then(async (res: Object) {this.pixelMapSrc image.createPixelMapSync((res as Uint8Array).buffer, this.opts);this.isMosaic true;})} catch (err) {console.error(doMosaicTask: execute fail, (err as BusinessError).toString());} }实现图像局部马赛克处理函数 async applyMosaic(dataArray: Uint8Array, imageWidth: number, imageHeight: number, blockSize: number,offMinX: number, offMinY: number, offMaxX: number, offMaxY: number): PromiseUint8Array | undefined {try {// 计算横排和纵排的块数let xBlocks Math.floor((Math.abs(offMaxX - offMinX)) / blockSize);let yBlocks Math.floor((Math.abs(offMaxY - offMinY)) / blockSize);logger.info(MosaicConstants.TAG, xBlocks: xBlocks.toString() ,yBlocks: yBlocks.toString());// 不足一块的按一块计算if (xBlocks 1) {xBlocks 1;offMaxX offMinX blockSize;}if (yBlocks 1) {yBlocks 1;offMaxY offMinY blockSize;}// 遍历每个块for (let y 0; y yBlocks; y) {for (let x 0; x xBlocks; x) {const startX x * blockSize offMinX;const startY y * blockSize offMinY;// 计算块内的平均颜色let totalR 0;let totalG 0;let totalB 0;let pixelCount 0;for (let iy startY; iy startY blockSize iy imageHeight iy offMaxY; iy) {for (let ix startX; ix startX blockSize ix imageWidth ix offMaxX; ix) {// TODO 知识点像素点数据包括RGB通道的分量值及图片透明度const index (iy * imageWidth ix) * 4; // 4 像素点数据包括RGB通道的分量值及图片透明度totalR dataArray[index];totalG dataArray[index 1];totalB dataArray[index 2];pixelCount;}}const averageR Math.floor(totalR / pixelCount);const averageG Math.floor(totalG / pixelCount);const averageB Math.floor(totalB / pixelCount);// TODO 知识点 将块内平均颜色应用到块内的每个像素for (let iy startY; iy startY blockSize iy imageHeight iy offMaxY; iy) {for (let ix startX; ix startX blockSize ix imageWidth ix offMaxX; ix) {const index (iy * imageWidth ix) * 4; // 4 像素点数据包括RGB通道的分量值及图片透明度dataArray[index] averageR;dataArray[index 1] averageG;dataArray[index 2] averageB;}}}}return dataArray;} catch (error) {logger.error(MosaicConstants.TAG, applyMosaic fail,err: error);return undefined;} }高性能知识点 本示例使用了taskpool执行耗时操作以达到性能优化。 工程结构模块类型 imagemosaic // har类型 |---view | |---ImageMosaicView.ets // 视图层-图片马赛克场景 |---constants | |---MosaicConstants.ets // 常量 模块依赖 本示例依赖common模块来实现日志的打印、动态路由模块来实现页面的动态加载。 最后 小编在之前的鸿蒙系统扫盲中有很多朋友给我留言不同的角度的问了一些问题我明显感觉到一点那就是许多人参与鸿蒙开发但是又不知道从哪里下手因为体系杂乱无章教授的人也多无从选择。有很多小伙伴不知道学习哪些鸿蒙开发技术不知道需要重点掌握哪些鸿蒙应用开发知识点而且学习时频繁踩坑最终浪费大量时间。所以有一份实用的鸿蒙HarmonyOS NEXT路线、视频、文档用来跟着学习是非常有必要的。 如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员 鸿蒙 NEXT 全栈开发学习笔记 希望这一份鸿蒙学习文档能够给大家带来帮助~ 鸿蒙HarmonyOS NEXT最新学习路线 ​ 该路线图包含基础技能、就业必备技能、多媒体技术、六大电商APP、进阶高级技能、实战就业级设备开发不仅补充了华为官网未涉及的解决方案 路线图适合人群 IT开发人员想要拓展职业边界零基础小白鸿蒙爱好者希望从0到1学习增加一项技能。技术提升/进阶跳槽发展瓶颈期提升职场竞争力快速掌握鸿蒙技术 2.视频教程学习PDF文档 鸿蒙语法ArkTS、TypeScript、ArkUI教程…… 纯血版鸿蒙全套学习文档面试、文档、全套视频等 鸿蒙APP开发必备 ​​ 总结 参与鸿蒙开发你要先认清适合你的方向如果是想从事鸿蒙应用开发方向的话可以参考本文的学习路径简单来说就是为了确保高效学习建议规划清晰的学习路线
http://www.hkea.cn/news/14468175/

相关文章:

  • 购物网站支付功能怎么做如何做团购网站
  • dw做网站时怎么改为绝对路径群晖nas wordpress
  • 毕业设计论文网站开发需要多少钱网址建立快捷方式
  • 住房建设部网站 保定中关村手机报价大全官网
  • 余姚网站推广策划案建设网站的建设费用包括
  • 云速成美站做网站好吗深圳网页制作培训课程价格
  • 医联体网站建设网站 空间 服务器 免费
  • 免费域名网站黄的免费本机iis网站
  • 免费网站在线收看用asp做网站的可行性分析
  • 做网站用什么数据库网站排名优化和竞价
  • 淇县网站设计公司西安seo排名收费
  • 网站设计的总结代刷网站是怎么做的
  • 网站后期维护流程润滑油东莞网站建设技术支持
  • 网站建设调研表山西大同专业网站建设制作价格
  • 高端网站开发有哪些建设银行网站公告在哪
  • seo教学网站做产地证新网站
  • 深圳宝安做网站的公司wordpress 优化版本
  • 广东公司网站建设企业wordpress注入广告
  • 做网站得做多少网页响应式网站上海有多少家
  • 中诺建设集团网站公司网站想维护服务器
  • 做网站时如何给文字做超链接百度自己的宣传广告
  • 百度推广网站一年多少钱dedecms做手机网站
  • 如何运用网站做宣传用dw做网站
  • 网站建设备案需要材料静态网站开发文章
  • 嘉兴市建设工程监理协会网站杭州网站排名优化
  • 展馆的科普网站建设网站建设如何推广业务
  • 如何查询一个网站的空间大小西安网站建设地址
  • 网站备案营业执照关于企业网站建设
  • 阿里云做网站经费wordpress 访客插件
  • 寿光网站优化wordpress安装 第二步