From 3938349e089f180ca5380d7a651148ee08bccb74 Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 17 Jun 2020 22:25:27 +0800 Subject: [PATCH] =?UTF-8?q?1.3.4=E7=89=88=E6=9C=AC=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=87=AA=E8=A1=8C=E9=85=8D=E7=BD=AE=E6=A8=A1=E5=9E=8B=E8=B7=AF?= =?UTF-8?q?=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenNSFW/build.gradle | 4 ++-- .../main/java/com/zwy/opennsfw/core/Classifier.kt | 14 +++++++++++++- demo/build.gradle | 6 +++--- demo/src/main/java/com/zwy/demo/NSFWApplication.kt | 4 ++-- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/OpenNSFW/build.gradle b/OpenNSFW/build.gradle index 2e80dd12..c9b6a928 100644 --- a/OpenNSFW/build.gradle +++ b/OpenNSFW/build.gradle @@ -9,8 +9,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 29 - versionCode 3 - versionName "1.3.3" + versionCode 4 + versionName "1.3.4" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' diff --git a/OpenNSFW/src/main/java/com/zwy/opennsfw/core/Classifier.kt b/OpenNSFW/src/main/java/com/zwy/opennsfw/core/Classifier.kt index 6113f6b2..d87a25ab 100644 --- a/OpenNSFW/src/main/java/com/zwy/opennsfw/core/Classifier.kt +++ b/OpenNSFW/src/main/java/com/zwy/opennsfw/core/Classifier.kt @@ -12,9 +12,12 @@ import org.tensorflow.lite.Interpreter import org.tensorflow.lite.gpu.GpuDelegate import java.io.ByteArrayOutputStream import java.io.File +import java.io.FileInputStream import java.lang.Math.max import java.nio.ByteBuffer import java.nio.ByteOrder +import java.nio.MappedByteBuffer +import java.nio.channels.FileChannel class Classifier private constructor(config: Config) { @@ -65,7 +68,7 @@ class Classifier private constructor(config: Config) { private var instance: Classifier? = null get() { if (field == null) { - if (config.context == null) throw RuntimeException("context函数未调用,请使用Classifier.Build().context(context)初始化") +// if (config.context == null) throw RuntimeException("context函数未调用,请使用Classifier.Build().context(context)初始化") field = Classifier(config) mClassifier = field } @@ -146,6 +149,15 @@ class Classifier private constructor(config: Config) { } } + private fun loadModelFile(context: Context): MappedByteBuffer { + val fileDescriptor = context.assets.openFd("nsfw.tflite") + val inputStream = FileInputStream(fileDescriptor.fileDescriptor) + val fileChannel = inputStream.channel + val startOffset = fileDescriptor.startOffset + val declaredLength = fileDescriptor.declaredLength + return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength) + } + private fun convertBitmapToByteBuffer(bitmap_: Bitmap) { imgData.rewind() diff --git a/demo/build.gradle b/demo/build.gradle index cd8ba281..50687d5b 100644 --- a/demo/build.gradle +++ b/demo/build.gradle @@ -11,8 +11,8 @@ android { applicationId "com.zwy.demo" minSdkVersion 19 targetSdkVersion 29 - versionCode 3 - versionName "1.3.3" + versionCode 4 + versionName "1.3.4" multiDexEnabled true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } @@ -83,7 +83,7 @@ dependencies { implementation "org.jetbrains.anko:anko:0.10.5" //NSFW鉴黄库 -// implementation 'com.github.devzwy:open_nsfw_android:1.3.2' +// implementation 'com.github.devzwy:open_nsfw_android:1.3.3' implementation project(path: ':OpenNSFW') implementation 'pub.devrel:easypermissions:3.0.0' diff --git a/demo/src/main/java/com/zwy/demo/NSFWApplication.kt b/demo/src/main/java/com/zwy/demo/NSFWApplication.kt index 3c3cdc7e..503aa071 100644 --- a/demo/src/main/java/com/zwy/demo/NSFWApplication.kt +++ b/demo/src/main/java/com/zwy/demo/NSFWApplication.kt @@ -28,10 +28,10 @@ class NSFWApplication : MultiDexApplication() { //初始化鉴黄库NSFW Classifier.Build() - .context(this) //必须调用 否则会有异常抛出 +// .context(this) //必须调用 否则会有异常抛出 // .isOpenGPU(true)//默认不开启GPU加速,默认为true // .numThreads(100) //分配的线程数 根据手机配置设置,默认1 -// .nsfwModuleFilePath("/data/user/0/com.zwy.demo/files/nsfw.tflite") + .nsfwModuleFilePath("/data/user/0/com.zwy.demo/files/nsfw.tflite") .build() //全局注入对象 startKoin {