import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';@Entry
@Component
struct Page {@State title: string = '图库';@State pictureArray: Resource[] = [$r('app.media.pic_1'), $r("app.media.pic_2"), $r('app.media.pic_3')];@State addPic: Resource = $r('app.media.addPic');private picTemp: Resource;@State pictureZIndex: number = 0;@State isSelect: boolean = false;private selectedPicture: number[] = [];addPicture = async () => {const photoSelectOptions = new picker.PhotoSelectOptions();photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; photoSelectOptions.maxSelectNumber = 5; let URI = null;const photoViewPicker = new picker.PhotoViewPicker();photoViewPicker.select(photoSelectOptions).then((photoSelectResult) => {URI = photoSelectResult.photoUristhis.pictureArray = this.pictureArray.concat(URI)let file = fs.openSync(URI, fs.OpenMode.READ_ONLY);console.info('===file fd: ' + file.fd);let buffer = new ArrayBuffer(4096);let readLen = fs.readSync(file.fd, buffer);console.info('===readSync data to file succeed and buffer size is:' + readLen);fs.closeSync(file);}).catch((err) => {console.error(`===Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);})}@Builder pixelMapBuilder() {Image(this.picTemp).height(66).objectFit(ImageFit.Contain)}changeIndex(index1: number, index2: number) {let temp = this.pictureArray[index1]this.pictureArray[index1] = this.pictureArray[index2]this.pictureArray[index2] = temp}build() {Column() {Text(this.title).fontSize(30).fontWeight(FontWeight.Bold).width('100%').textAlign(TextAlign.Center).padding(6).backgroundColor("#aee4d8")Divider().strokeWidth(5).shadow({ radius: 3, color: "#F5F5F5", offsetX: 5, offsetY: 10 })Column() {Grid() {ForEach(this.pictureArray.slice(0, this.pictureArray.length - 1), (item, index) => {GridItem() {Image(item).width('100%').objectFit(ImageFit.Contain).onTouch((event: TouchEvent) => {if (event.type === TouchType.Down) {this.picTemp = item}})}})GridItem() {Image(this.addPic).width('100%').objectFit(ImageFit.Fill)}.onClick(this.addPicture)}.editMode(true).columnsTemplate('1fr 1fr 1fr').rowsGap(3).columnsGap(3).onScrollIndex((first: number) => {console.info("====" + first.toString())}).onItemDragStart((event: ItemDragInfo, itemIndex: number) => {return this.pixelMapBuilder()}).onItemDrop((event: ItemDragInfo, itemIndex: number, insertIndex: number, isSuccess: boolean) => {if (insertIndex < this.pictureArray.length - 1) {this.changeIndex(itemIndex, insertIndex)}})}.height("80%").width('100%')}.height("100%").justifyContent(FlexAlign.Start)}
}`在这里插入代码片`