我正在寻找能够使用 PESDK for android 和 ios 将文件系统中的图像放在原始图像上方的解决方案。正如我所见,PESDK 默认不支持此类功能,但贴纸功能看起来与我需要的非常相似。所以,我尝试自定义贴纸行为。这个想法是使用文件系统中的图像提供自定义贴纸列表,并使用适当的预览和图像源创建自定义 ImageStickerConfig。
我面临的第一个问题是贴纸列表屏幕上发生的 OutOfMemory 异常。当我提供与图像源相同的预览源时会发生这种情况(贴纸列表不进行图像缩小)。
第二个问题是当一些不可读(损坏)的图像作为预览源提供时发生的崩溃。我可以提供需要的崩溃日志。
根据上面的故事,我有以下问题:
- 除了自定义贴纸行为之外,还有其他方法可以将图像作为叠加层添加到另一个图像吗?
- 我可以期望支持预览图像缩小吗?从性能角度来看,将所有图像的缩略图存储在文件系统中的解决方法并不好。
- 我可以期望 SDK 以适当的方式处理损坏的图像吗?
提前致谢
编辑 16.01.2018,回答 Sven Nähler 的问题:
- 不幸的是,即使 ImageStickerConfig 被扩展,我仍然会收到 OOM 错误。该设备是 LG g3s,android 5.1。日志:
java.lang.OutOfMemoryError:无法在 dalvik.system.VMRuntime.newNonMovableArray(Native Method) 在 android.graphics.nativeDecodeStream(Native Method) 在 dalvik.system.VMRuntime.newNonMovableArray(Native Method) 分配 23970828 字节分配和 16777216 个可用字节和 19MB。 BitmapFactory.decodeStreamInternal(BitmapFactory.java:635) 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611) 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:649) 在 ly.img.android.sdk.decoder.RasterDecoder.getBitmap(RasterDecoder.java:53) 在 ly.img .android.sdk.decoder.ImageSource.getBitmap(ImageSource.java:389) 在 ly.img.android.sdk.decoder.ImageSource.getBitmap(ImageSource.java:376) 在 ly.img.android.sdk.models.config .AbstractConfig.createThumbnailBitmap(AbstractConfig.java:195) 在 ly.img。android.sdk.models.config.AbstractConfig.getThumbnailBitmap(AbstractConfig.java:189) 在 ly.img.android.sdk.models.config.AbstractConfig.getThumbnailBitmap(AbstractConfig.java:173) 在 ly.img.android.sdk。 models.config.AbstractConfig.generateBindDataAsync(AbstractConfig.java:128) 在 ly.img.android.sdk.models.config.AbstractConfig.generateBindDataAsync(AbstractConfig.java:34) 在 ly.img.android.ui.adapter.DataSourceListAdapter$ LoaderList.runEntryProcess(DataSourceListAdapter.java:381) 在 ly.img.android.ui.adapter。DataSourceListAdapter$LoaderList$Task.run(DataSourceListAdapter.java:416)
- 日志如下:
java.lang.NullPointerException:尝试在 android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1047) 的空对象引用上调用虚拟方法“boolean java.lang.String.equals(java.lang.Object)”在 ly.img.android.sdk.decoder.vector.XmlDrawableDecoder.getDrawable(XmlDrawableDecoder.java:204) 在 ly.img.android.sdk.decoder 的 android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1033) .vector.XmlDrawableDecoder.decodeSize(XmlDrawableDecoder.java:84) 在 ly.img.android.sdk。ly.img.android.sdk.decoder.VectorDecoder.calculateExactSample(VectorDecoder.java:110) 在 ly.img.android.sdk.decoder.VectorDecoder.getBitmap(VectorDecoder. java:62) 在 ly.img.android.sdk.decoder.ImageSource.getBitmap(ImageSource.java:389) 在 ly.img.android.sdk.decoder.ImageSource.getBitmap(ImageSource.java:376) 在 ly.img .android.sdk.models.config.AbstractConfig.createThumbnailBitmap(AbstractConfig.java:195) 在 ly.img.android.sdk.models.config.AbstractConfig.getThumbnailBitmap(AbstractConfig.java:189) 在 ly.img.android.sdk.models.config.AbstractConfig.getThumbnailBitmap(AbstractConfig.java:173) 在 ly .img.android.sdk.models.config.AbstractConfig.generateBindDataAsync(AbstractConfig.java:128) 在 ly.img.android.sdk.models.config.AbstractConfig.generateBindDataAsync(AbstractConfig.java:34) 在 ly.img.android .ui.adapter.DataSourceListAdapter$LoaderList.runEntryProcess(DataSourceListAdapter.java:381)在ly.img.android.ui.adapter.DataSourceListAdapter$LoaderList$Task.run(DataSourceListAdapter.java:416)