creek
The AI Image Editor of 2030git clone https://github.com/maydayv7/creek
android/app/src/main/kotlin/com/example/adobe/ImageAnalyzer.kt (2872B)
1package com.creek.ui
2
3import android.content.Context
4import com.chaquo.python.Python
5import com.chaquo.python.android.AndroidPlatform
6import java.util.concurrent.CountDownLatch
7
8object ImageAnalyzer {
9 private val initLatch = CountDownLatch(1)
10 private var isInitializing = false
11
12 fun initializePython(context: Context) {
13 if (!isInitializing) {
14 isInitializing = true
15 if (!Python.isStarted()) {
16 Python.start(AndroidPlatform(context))
17 }
18 initLatch.countDown()
19 }
20 }
21
22 private fun waitForPython() {
23 try {
24 initLatch.await()
25 } catch (e: InterruptedException) {
26 e.printStackTrace()
27 }
28 }
29
30 fun analyzeColorStyle(imagePath: String): String? {
31 waitForPython()
32 return try {
33 val py = Python.getInstance()
34 val module = py.getModule("color_style_infer")
35 val resultObj = module.callAttr("analyze_color_style", imagePath)
36 resultObj.toString()
37 } catch (e: Exception) {
38 e.printStackTrace()
39 null
40 }
41 }
42
43 fun analyzeLayout(imagePath: String): String? {
44 waitForPython()
45 return try {
46 val py = Python.getInstance()
47 val module = py.getModule("analyze_layout")
48 val result = module.callAttr("analyze_single_image", imagePath)
49 result.toString()
50 } catch (e: Exception) {
51 e.printStackTrace()
52 null
53 }
54 }
55
56 fun downloadInstagramImage(url: String, outputDir: String): String? {
57 waitForPython()
58 return try {
59 val py = Python.getInstance()
60 val module = py.getModule("instagram_downloader")
61 val result = module.callAttr("download_instagram_image", url, outputDir)
62 result.toString()
63 } catch (e: Exception) {
64 e.printStackTrace()
65 null
66 }
67 }
68
69 fun generateStylesheet(jsonList: List<String>): String? {
70 waitForPython()
71 return try {
72 val py = Python.getInstance()
73 val module = py.getModule("stylesheet_generator")
74 val result = module.callAttr("generate_stylesheet", jsonList)
75 result.toString()
76 } catch (e: Exception) {
77 e.printStackTrace()
78 null
79 }
80 }
81
82 fun generateMagicPrompt(stylesheetJson: String, caption: String, userPrompt: String): String? {
83 waitForPython()
84 return try {
85 val py = Python.getInstance()
86 val module = py.getModule("stylesheet_generator")
87 val result = module.callAttr("generate_magic_prompt", stylesheetJson, caption, userPrompt)
88 result.toString()
89 } catch (e: Exception) {
90 e.printStackTrace()
91 null
92 }
93 }
94}