HarmonyOS 鸿蒙Next 下载gif图片报错

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 下载gif图片报错

鸿蒙下载gif图片报错 报错ImageSource mismatch 图中type为gif,format为image/gif

2 回复
这边给您提供一个下载gif的demo,供您参考:
深色代码主题
复制
import http from '@ohos.net.http';

import { BusinessError } from ‘@ohos.base’;

import common from ‘@ohos.app.ability.common’;

import photoAccessHelper from ‘@ohos.file.photoAccessHelper’;

import fs from ‘@ohos.file.fs’;

import promptAction from ‘@ohos.promptAction’;

@Entry

@Component

export struct SaveNetWorkPictures {

  imageBuffer: ArrayBuffer | undefined = undefined; // 图片ArrayBuffer

  async aboutToAppear(): Promise<void> {

    //请求网络图片

    //this.getPicture();

  }

  build() {

    Column() {

      Column() {

        SaveButton({ icon: SaveIconStyle.FULL_FILLED })

          .iconSize(60)

          .iconColor("#888888")

          .width(99)

          .height(99)

          .onClick(async () => {

            // if (this.imageBuffer !== undefined) {

            // await this.getPicture();

            await this.saveImage(this.imageBuffer);

            promptAction.showToast({

              message: ‘图片保存成功’,

              duration: 2000

            })

            // }

          })

      }

      .height(‘100%’)

      .padding(100)

    }

  }

  // * 通过http的request方法从网络下载图片资源

  getPicture(): Promise<void> {

    return new Promise((resolve)=>{

      http.createHttp()// 显示网络图片的地址

        .request(https://gitee.com/harmonyos-cases/cases/raw/master/CommonAppDevelopment/product/entry/src/main/resources/base/media/highly_loaded_component_render.gif,

          (error: BusinessError, data: http.HttpResponse) => {

            if (error) {

              // 下载失败时弹窗提示检查网络,不执行后续逻辑

              promptAction.showToast({

                message: ‘图片加载失败,请检查网络’,

                duration: 2000

              })

              return;

            }

            // this.transcodePixelMap(data);

            // 判断网络获取到的资源是否为ArrayBuffer类型

            if (data.result instanceof ArrayBuffer) {

              this.imageBuffer = data.result as ArrayBuffer;

            }

            resolve();

          }

        )

    })

  }

  // * 保存ArrayBuffer到图库

  async saveImage(buffer: ArrayBuffer | string | undefined): Promise<void> {

    if(this.imageBuffer == undefined ){

      await this.getPicture()

    }

    try {

      const context = getContext(this) as common.UIAbilityContext; // 获取getPhotoAccessHelper需要的context

      const helper = photoAccessHelper.getPhotoAccessHelper(context); // 获取相册管理模块的实例

      const uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, ‘gif’); // 指定待创建的文件类型、后缀和创建选项,创建图片或视频资源

      const file = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);

      await fs.write(file.fd, this.imageBuffer);

      await fs.close(file.fd);

    } catch (e) {

      console.log(JSON.stringify(e))

    }

  }

}

更多关于HarmonyOS 鸿蒙Next 下载gif图片报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中下载GIF图片报错,可能涉及多种因素,包括但不限于网络权限、文件读写权限、文件格式支持及API调用错误等。

  1. 检查网络权限:确保应用已正确申请并获取网络访问权限,这是下载任何网络资源的前提。

  2. 验证文件读写权限:检查应用是否拥有对存储设备的读写权限,这对于保存下载的文件至关重要。

  3. 文件格式支持:确认HarmonyOS鸿蒙Next系统是否原生支持GIF格式图片的解析与展示。尽管GIF是常见格式,但不同系统或应用可能对格式支持存在差异。

  4. API调用检查:审查代码中用于下载和保存GIF图片的API调用,确保遵循了HarmonyOS的API规范,且调用顺序、参数设置无误。

  5. 错误日志分析:查看系统或应用生成的错误日志,通常能提供更具体的错误信息,有助于定位问题根源。

  6. 系统兼容性:考虑是否存在因系统版本差异导致的兼容性问题,尝试在不同版本的HarmonyOS设备上重现问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部