Skip to content

Commit 4eea6d7

Browse files
committed
udpate ai
1 parent 18a2408 commit 4eea6d7

File tree

6 files changed

+106
-14
lines changed

6 files changed

+106
-14
lines changed

subs/ai/src/main/java/com/engineer/ai/FastStyleTransActivity.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.os.Build
88
import android.os.Bundle
99
import android.util.Log
1010
import android.widget.Toast
11+
import androidx.activity.SystemBarStyle
1112
import androidx.activity.enableEdgeToEdge
1213
import androidx.activity.result.PickVisualMediaRequest
1314
import androidx.activity.result.contract.ActivityResultContracts
@@ -16,6 +17,8 @@ import androidx.appcompat.app.AlertDialog
1617
import androidx.appcompat.app.AppCompatActivity
1718
import androidx.core.app.ActivityCompat
1819
import androidx.core.content.ContextCompat
20+
import androidx.core.view.WindowInsetsCompat
21+
import androidx.core.view.WindowInsetsControllerCompat
1922
import androidx.lifecycle.lifecycleScope
2023
import com.engineer.ai.databinding.ActivityTansStyleBinding
2124
import com.engineer.ai.util.AndroidAssetsFileUtil
@@ -40,6 +43,7 @@ class FastStyleTransActivity : AppCompatActivity() {
4043
override fun onCreate(savedInstanceState: Bundle?) {
4144
super.onCreate(savedInstanceState)
4245
enableEdgeToEdge()
46+
WindowInsetsControllerCompat(window, window.decorView).hide(WindowInsetsCompat.Type.statusBars())
4347
viewBinding = ActivityTansStyleBinding.inflate(layoutInflater)
4448
setContentView(viewBinding.root)
4549
initModel()
@@ -73,9 +77,10 @@ class FastStyleTransActivity : AppCompatActivity() {
7377

7478
private fun genImage() {
7579
currentBitmap?.let {
80+
viewBinding.transResult.setImageBitmap(null)
7681
AsyncExecutor.fromIO().execute {
7782
StyleTransferProcessor.initModule(module)
78-
StyleTransferProcessor.transferStyleAsync(it, 1.0f) {
83+
StyleTransferProcessor.transferStyleAsync(it, 0.5f) {
7984
runOnUiThread {
8085
refreshLoading(false)
8186
viewBinding.transResult.setImageBitmap(it)

subs/ai/src/main/java/com/engineer/ai/GanActivity.kt

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,80 @@
11
package com.engineer.ai
22

3+
import android.graphics.Bitmap
34
import android.os.Bundle
45
import android.util.Log
6+
import androidx.activity.enableEdgeToEdge
57
import androidx.appcompat.app.AppCompatActivity
8+
import androidx.core.view.WindowInsetsCompat
9+
import androidx.core.view.WindowInsetsControllerCompat
10+
import androidx.recyclerview.widget.GridLayoutManager
611
import com.engineer.ai.databinding.ActivityGanBinding
712
import com.engineer.ai.util.AndroidAssetsFileUtil
13+
import com.engineer.ai.util.AsyncExecutor
14+
import com.engineer.ai.util.BitmapGridAdapter
815
import com.engineer.ai.util.Utils
916
import org.pytorch.IValue
1017
import org.pytorch.LiteModuleLoader
1118
import org.pytorch.Module
1219
import org.pytorch.Tensor
20+
import org.pytorch.torchvision.TensorImageUtils
1321
import java.util.Random
1422

1523

1624
class GanActivity : AppCompatActivity() {
1725
private val TAG = "GanActivity"
1826
private lateinit var module: Module
1927
private val modelName = "dcgan.pt"
28+
private val bitmapList = mutableListOf<Bitmap>()
29+
private lateinit var adapter: BitmapGridAdapter
2030

2131
private lateinit var viewBinding: ActivityGanBinding
2232
override fun onCreate(savedInstanceState: Bundle?) {
2333
super.onCreate(savedInstanceState)
34+
enableEdgeToEdge()
35+
WindowInsetsControllerCompat(
36+
window, window.decorView
37+
).hide(WindowInsetsCompat.Type.statusBars())
2438
viewBinding = ActivityGanBinding.inflate(layoutInflater)
2539
setContentView(viewBinding.root)
2640
initModel()
2741
viewBinding.gen.setOnClickListener {
28-
genImage()
42+
// val bitmap = genImage()
43+
// viewBinding.ganResult.setImageBitmap(bitmap)
44+
45+
AsyncExecutor.fromIO().execute {
46+
bitmapList.clear()
47+
for (i in 0 until 120) {
48+
val bitmap = genImage()
49+
bitmapList.add(bitmap)
50+
}
51+
Log.i(TAG, "done")
52+
runOnUiThread {
53+
Log.i(TAG, "notify")
54+
adapter.notifyDataSetChanged()
55+
}
56+
}
2957
}
58+
59+
60+
val recyclerView = viewBinding.recyclerView
61+
recyclerView.layoutManager = GridLayoutManager(this, 6) // 每行 5 列
62+
adapter = BitmapGridAdapter(bitmapList)
63+
recyclerView.adapter = adapter
3064
}
3165

32-
private fun genImage() {
66+
private fun genImage(): Bitmap {
3367
val zDim = intArrayOf(1, 100)
3468
val outDims = intArrayOf(64, 64, 3)
3569
Log.d(TAG, zDim.contentToString())
3670
val z = FloatArray(zDim[0] * zDim[1])
37-
Log.d(TAG,"z = ${z.contentToString()}")
71+
Log.d(TAG, "z = ${z.contentToString()}")
3872
val rand = Random()
3973
// 生成高斯随机数
4074
for (c in 0 until zDim[0] * zDim[1]) {
4175
z[c] = rand.nextGaussian().toFloat()
4276
}
43-
Log.d(TAG,"z = ${z.contentToString()}")
77+
Log.d(TAG, "z = ${z.contentToString()}")
4478
val shape = longArrayOf(1, 100)
4579
val tensor = Tensor.fromBlob(z, shape)
4680
Log.d(TAG, tensor.dataAsFloatArray.contentToString())
@@ -57,8 +91,10 @@ class GanActivity : AppCompatActivity() {
5791
}
5892
}
5993
}
94+
Log.e(TAG, "${resultImg.size}, ${resultImg[0].size},${resultImg[0][0].contentToString()}")
95+
Log.e(TAG, "${resultImg.size}, ${resultImg[0].contentToString()}")
6096
val bitmap = Utils.getBitmap(resultImg, outDims)
61-
viewBinding.ganResult.setImageBitmap(bitmap)
97+
return bitmap
6298
}
6399

64100
private fun initModel() {
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.engineer.ai.util
2+
3+
import android.graphics.Bitmap
4+
import android.view.LayoutInflater
5+
import android.view.View
6+
import android.view.ViewGroup
7+
import android.widget.ImageView
8+
import androidx.recyclerview.widget.RecyclerView
9+
import com.engineer.ai.R
10+
11+
class BitmapGridAdapter(private val bitmaps: List<Bitmap>) :
12+
RecyclerView.Adapter<BitmapGridAdapter.BitmapViewHolder>() {
13+
14+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BitmapViewHolder {
15+
val view = LayoutInflater.from(parent.context)
16+
.inflate(R.layout.item_bitmap, parent, false)
17+
return BitmapViewHolder(view)
18+
}
19+
20+
override fun onBindViewHolder(holder: BitmapViewHolder, position: Int) {
21+
holder.bind(bitmaps[position])
22+
}
23+
24+
override fun getItemCount(): Int = bitmaps.size
25+
26+
class BitmapViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
27+
private val imageView: ImageView = itemView.findViewById(R.id.imageView)
28+
29+
fun bind(bitmap: Bitmap) {
30+
imageView.setImageBitmap(bitmap)
31+
}
32+
}
33+
}

subs/ai/src/main/res/layout/activity_gan.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,19 @@
1313
android:text="gan_gen"
1414
app:layout_constraintBottom_toBottomOf="parent" />
1515

16+
1617
<ImageView
1718
android:id="@+id/gan_result"
1819
android:layout_width="match_parent"
1920
android:layout_height="wrap_content"
2021
app:layout_constraintBottom_toTopOf="@id/gen" />
2122

23+
<androidx.recyclerview.widget.RecyclerView
24+
android:id="@+id/recyclerView"
25+
android:layout_width="match_parent"
26+
android:layout_height="0dp"
27+
android:padding="8dp"
28+
app:layout_constraintBottom_toTopOf="@id/gen"
29+
app:layout_constraintTop_toTopOf="parent" />
30+
2231
</androidx.constraintlayout.widget.ConstraintLayout>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<ImageView
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
android:id="@+id/imageView"
5+
android:layout_width="64dp"
6+
android:layout_height="64dp"
7+
android:scaleType="centerCrop"
8+
android:adjustViewBounds="true"
9+
android:padding="4dp" />

subs/compose/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ android {
3535

3636
dependencies {
3737
implementation fileTree(include: ['*.aar'], dir: 'libs')
38-
implementation libs.androidx.core.ktx
39-
implementation libs.androidx.lifecycle.runtime.ktx
38+
api libs.androidx.core.ktx
39+
api libs.androidx.lifecycle.runtime.ktx
4040
api libs.androidx.activity.compose
4141
api platform(libs.androidx.compose.bom)
4242
api libs.androidx.ui
@@ -51,12 +51,12 @@ dependencies {
5151

5252
api libs.accompanist.pager
5353
api libs.accompanist.pager.indicator
54-
implementation libs.androidx.activity.compose
55-
implementation platform(libs.androidx.compose.bom)
56-
implementation libs.androidx.ui
57-
implementation libs.androidx.ui.graphics
58-
implementation libs.androidx.ui.tooling.preview
59-
implementation libs.androidx.material3
54+
api libs.androidx.activity.compose
55+
api platform(libs.androidx.compose.bom)
56+
api libs.androidx.ui
57+
api libs.androidx.ui.graphics
58+
api libs.androidx.ui.tooling.preview
59+
api libs.androidx.material3
6060

6161

6262
testImplementation libs.junit

0 commit comments

Comments
 (0)