diff --git a/entry/src/main/resources/base/media/gifSample_single_frame.gif b/entry/src/main/resources/base/media/gifSample_single_frame.gif index c1b9f5c..94ce8e1 100644 Binary files a/entry/src/main/resources/base/media/gifSample_single_frame.gif and b/entry/src/main/resources/base/media/gifSample_single_frame.gif differ diff --git a/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets b/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets index 9d7dae5..f274b1a 100644 --- a/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets +++ b/imageknife/src/main/ets/components/imageknife/ImageKnifeComponent.ets @@ -608,6 +608,10 @@ export struct ImageKnifeComponent { } // draw Frame this.drawFrame(frames, index, context, compWidth, compHeight); + //如果gif动图只有一帧的情况下,不进行后面代码的逐帧绘制循环 + if (frames.length <= 1) { + return + } // 记录渲染结束时间点 let end = new Date().getTime(); @@ -622,9 +626,6 @@ export struct ImageKnifeComponent { } // 减去程序执行消耗,剩余的准确延迟时间 let delayTime = Math.max(0, Math.floor(stayTime - diff)); - if (!delayTime) { - delayTime = 100; - } this.endGifLoopTime = end; // 当前gif到第N帧,所对应的N渲染时间,和N-1的停留时间。(第一帧只有渲染时间没有停留时间)