From 410ae040c1e665346a6b9809039ee5acbe2ba649 Mon Sep 17 00:00:00 2001 From: jason Date: Mon, 20 May 2019 17:12:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96demo=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=BC=82=E6=AD=A5=E6=89=AB=E6=8F=8F=E6=97=B6=E5=A4=9A?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E5=90=8C=E4=BA=8B=E6=93=8D=E4=BD=9C=E4=B8=80?= =?UTF-8?q?=E5=9D=97=E6=95=B0=E6=8D=AE=E6=97=B6=E5=BC=95=E5=8F=91=E7=9A=84?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 18 ++--- .../example/open_nsfw_android/MainActivity.kt | 64 ++++++------------ .../example/open_nsfw_android/MainAdapter.kt | 36 ++++++++++ .../example/open_nsfw_android/MyNsfwBean.kt | 8 +++ app/src/main/res/layout/activity_main.xml | 66 ++++++++++++------- app/src/main/res/layout/main_item.xml | 18 +++++ app/src/main/res/values/colors.xml | 4 ++ nsfw/build.gradle | 1 + .../java/com/zwy/nsfw/api/NsfwHelper.java | 17 ++++- 9 files changed, 156 insertions(+), 76 deletions(-) create mode 100644 app/src/main/java/com/example/open_nsfw_android/MainAdapter.kt create mode 100644 app/src/main/java/com/example/open_nsfw_android/MyNsfwBean.kt create mode 100644 app/src/main/res/layout/main_item.xml diff --git a/app/build.gradle b/app/build.gradle index 76d6a244..b47825d8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,12 +27,12 @@ android { aaptOptions { noCompress "tflite" } - sourceSets { - main { - jniLibs.srcDirs = ['libs'] - assets.srcDir("main/assets") - } - } +// sourceSets { +// main { +// jniLibs.srcDirs = ['libs'] +// assets.srcDir("main/assets") +// } +// } } dependencies { @@ -40,9 +40,11 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.android.support:design:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' -// implementation project(path: ':nsfw') - implementation 'com.github.devzwy:open_nsfw_android:1.2.2' + implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30' + implementation project(path: ':nsfw') +// implementation 'com.github.devzwy:open_nsfw_android:1.2.3' } diff --git a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt index 33b9283b..c2fbe8e5 100644 --- a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt +++ b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt @@ -4,15 +4,16 @@ import android.annotation.SuppressLint import android.graphics.BitmapFactory import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.util.Log +import android.support.v7.widget.LinearLayoutManager import com.zwy.nsfw.api.NsfwHelper import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { var nsfwHelper: NsfwHelper? = null - - + var mainAdapter: MainAdapter? = null + var index = 0 + val listData: ArrayList = ArrayList() @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -21,51 +22,24 @@ class MainActivity : AppCompatActivity() { // val b = BitmapFactory.decodeStream(resources.assets.open("img/06 (1).jpg")) // iv.setImageBitmap(b) nsfwHelper = NsfwHelper.getInstance(this, true, 1) - - bt_.setOnClickListener { - //同步识别 + mainAdapter = MainAdapter(null) + rv.layoutManager = LinearLayoutManager(this) + rv.adapter = mainAdapter + tv_start.setOnClickListener { for (a in resources.assets.list("img")) { - val b = BitmapFactory.decodeStream(resources.assets.open("img/${a}")) - val nsfwBean = nsfwHelper?.scanBitmapSyn(b) - Log.d("demo", nsfwBean.toString() + " - ${a}") - tvv.text = "识别成功:\n\tSFW score : ${nsfwBean?.sfw}\n\tNSFW score : ${nsfwBean?.nsfw},- ${a}" - if (nsfwBean?.nsfw ?: 0f > 0.7) { - tvv.text = "${tvv.text} \n \t - 色情图片" - } else { - tvv.text = "${tvv.text} \n \t - 正常图片" + val path = "img/${a}" + val b = BitmapFactory.decodeStream(resources.assets.open(path)) + listData.add(MyNsfwBean(0f, 0f, path, b)) + nsfwHelper?.scanBitmap(b) { sfw, nsfw -> + listData[index].sfw = sfw + listData[index].nsfw = nsfw + mainAdapter?.addData(listData[index]) + mainAdapter?.notifyItemInserted(index) + index++ } } -// val nsfwBean = nsfwHelper?.scanBitmapSyn(b) -// Log.d("demo", nsfwBean.toString()) -// tvv.text = "识别成功:\n\tSFW score : ${nsfwBean?.sfw}\n\tNSFW score : ${nsfwBean?.nsfw}" -// if (nsfwBean?.nsfw ?: 0f > 0.7) { -// tvv.text = "${tvv.text} \n \t - 色情图片" -// } else { -// tvv.text = "${tvv.text} \n \t - 正常图片" -// } -// //异步识别,接口回调识别结果 -// nsfwHelper?.scanBitmap(b) { sfw, nsfw -> -// Log.d("demo", "sfw:$sfw,nsfw:$nsfw") -// } - } - } -// override fun onResume() { -// super.onResume() -// if (!OpenCVLoader.initDebug()) { -// OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); -// } else { -// mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); -// } -// } + } -// internal var mLoaderCallback: LoaderCallbackInterface = object : LoaderCallbackInterface { -// override fun onManagerConnected(status: Int) { -// -// } -// -// override fun onPackageInstall(operation: Int, callback: InstallCallbackInterface) { -// -// } -// } + } } diff --git a/app/src/main/java/com/example/open_nsfw_android/MainAdapter.kt b/app/src/main/java/com/example/open_nsfw_android/MainAdapter.kt new file mode 100644 index 00000000..3e40d90b --- /dev/null +++ b/app/src/main/java/com/example/open_nsfw_android/MainAdapter.kt @@ -0,0 +1,36 @@ +package com.example.open_nsfw_android + +import android.annotation.SuppressLint +import android.support.v4.content.ContextCompat +import android.widget.ImageView +import android.widget.RelativeLayout +import android.widget.TextView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder + +class MainAdapter(val nsfwList: List?) : + BaseQuickAdapter(R.layout.main_item, nsfwList) { + + @SuppressLint("SetTextI18n") + override fun convert(helper: BaseViewHolder, item: MyNsfwBean) { + val textView = helper.getView(R.id.tv_text) + val imageView = helper.getView(R.id.iv) + val view = helper.getView(R.id.view) + var nsfwStr = "色情图片" + var color = ContextCompat.getColor(mContext,R.color.nsfw1) + when (item.nsfw) { + in 0.0..0.3 -> { + nsfwStr = "正常图片" + color = ContextCompat.getColor(mContext,R.color.nsfw3) + } + in 0.3..0.7 -> { + nsfwStr = "👙比基尼" + color = ContextCompat.getColor(mContext,R.color.nsfw2) + } + } + textView.text = + "path = ${"img/${item.path}"} \n\nSFW score: ${item.sfw}\nNSFW score: ${item.nsfw} \n\n 鉴定结果: ${nsfwStr}" + imageView.setImageBitmap(item.bitmap) + view.setBackgroundColor(color) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/open_nsfw_android/MyNsfwBean.kt b/app/src/main/java/com/example/open_nsfw_android/MyNsfwBean.kt new file mode 100644 index 00000000..8fe1cd7d --- /dev/null +++ b/app/src/main/java/com/example/open_nsfw_android/MyNsfwBean.kt @@ -0,0 +1,8 @@ +package com.example.open_nsfw_android + +import android.graphics.Bitmap +import com.zwy.nsfw.api.NsfwBean + +data class MyNsfwBean(var sfw: Float,var nsfw: Float, val path: String,val bitmap:Bitmap) { + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 87dbdb1b..67a45de1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,27 +1,49 @@ - - -