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 {