1 Commits
Author SHA1 Message Date
xsl 8277d26659 save hair demo 2026-04-20 21:21:40 +08:00
40 changed files with 731 additions and 20 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ android {
compileSdk 36
defaultConfig {
applicationId "com.inewme.uvmirror.f20251129"
applicationId "com.inewme.uvmirror.f20260420"
minSdk 30
targetSdk 36
versionCode 1
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@@ -2292,5 +2292,103 @@
"x": 768,
"y": 768
}
},
"90": {
"000000.png": {
"x": 0,
"y": 0
},
"000001.png": {
"x": 512,
"y": 0
}
},
"91": {
"000001.png": {
"x": 0,
"y": 0
},
"000002.png": {
"x": 512,
"y": 0
}
},
"201": {
"000000.png": {
"x": 0,
"y": 0
}
},
"202": {
"000000.png": {
"x": 0,
"y": 0
}
},
"203": {
"000000.png": {
"x": 0,
"y": 0
}
},
"204": {
"000000.png": {
"x": 0,
"y": 0
}
},
"205": {
"000000.png": {
"x": 0,
"y": 0
}
},
"206": {
"000000.png": {
"x": 0,
"y": 0
}
},
"207": {
"000000.png": {
"x": 0,
"y": 0
}
},
"208": {
"000000.png": {
"x": 0,
"y": 0
}
},
"209": {
"000000.png": {
"x": 0,
"y": 0
}
},
"210": {
"000000.png": {
"x": 0,
"y": 0
}
},
"211": {
"000000.png": {
"x": 0,
"y": 0
}
},
"212": {
"000000.png": {
"x": 0,
"y": 0
}
},
"213": {
"000000.png": {
"x": 0,
"y": 0
}
}
}
@@ -0,0 +1,611 @@
{
"3": [
"000000.png"
],
"4": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"5": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"6": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"7": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"11": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png"
],
"12": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png"
],
"13": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"14": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"21": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"56": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"59": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png"
],
"62": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"65": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"68": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"71": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"76": [
"76.png"
],
"77": [
"77.png"
],
"78": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png",
"000028.png",
"000029.png",
"000030.png",
"000031.png"
],
"80": [
"80.png"
],
"81": [
"000000.png",
"000001.png",
"000002.png",
"000003.png",
"000004.png",
"000005.png",
"000006.png",
"000007.png",
"000008.png",
"000009.png",
"000010.png",
"000011.png",
"000012.png",
"000013.png",
"000014.png",
"000015.png",
"000016.png",
"000017.png",
"000018.png",
"000019.png",
"000020.png",
"000021.png",
"000022.png",
"000023.png",
"000024.png",
"000025.png",
"000026.png",
"000027.png"
],
"90": [
"000000.png",
"000001.png"
],
"91": [
"000001.png",
"000002.png"
],
"201": [
"000000.png"
],
"202": [
"000000.png"
],
"203": [
"000000.png"
],
"204": [
"000000.png"
],
"205": [
"000000.png"
],
"206": [
"000000.png"
],
"207": [
"000000.png"
],
"208": [
"000000.png"
],
"209": [
"000000.png"
],
"210": [
"000000.png"
],
"211": [
"000000.png"
],
"212": [
"000000.png"
],
"213": [
"000000.png"
]
}
@@ -49,9 +49,10 @@ class MakeupActivity : FaceActivity()
// 然后 又播放了8秒钟,这个时候要却换到 (11, 13, 21 动画序列了), 同时设置序列播放完成回调函数
// 然后 播放完这个序列又要切换为原来的序列播放,通过序列播放完成回调函数实现
private var elapsedTime = 0 // 总经过时间(ms
private val sequenceA = listOf("4", "5", "6", "7", "55", "59", "76", "77", "78")
private val sequenceB = listOf("55", "59", "76")
private val sequenceAll = listOf("4", "5", "6", "7", "55", "59", "76", "77", "78")
private val sequenceA = listOf("90")
private val sequenceB = listOf("91")
private val sequenceAll = listOf("90", "91")
private fun update()
{
@@ -66,19 +67,17 @@ class MakeupActivity : FaceActivity()
if(elapsedTime == 10*1000){
//暂停动画
StopMotion()
PlayMotionList(sequenceB, true, null)
}
if(elapsedTime == 10*1000 + 5*1000){
//恢复播放动画
ResumeMotion()
}
if(elapsedTime == 10*1000 + 5*1000 + 8*1000){
PlayMotionList(sequenceB, true){
//这里是播放完动画后的回调,再次切换到原来的 sequenceA
if(elapsedTime == 20*1000){
//暂停动画
PlayMotionList(sequenceA, true, null)
}
if(elapsedTime == 30*1000){
//暂停动画
PlayMotionList(sequenceB, true, null)
}
}
@@ -22,7 +22,7 @@ class MotionManager {
zoom = z
}
activity.SetInitArg(initArg.toJson())
existMotions = readMotionsFromAssets(activity, "pic/motion_data_ex.json")
existMotions = readMotionsFromAssets(activity, "pic/motion_data_ex2.json")
}
+1 -1
View File
@@ -1,3 +1,3 @@
<resources>
<string name="app_name">f20251129</string>
<string name="app_name">f20260420</string>
</resources>
+5 -3
View File
@@ -7,7 +7,8 @@ RESIZE_TO = (256, 256)
LARGE_IMAGE_SIZE = (2048, 2048)
IMAGE_COUNT = 64
ROOT_DIR = '../example/src/main/assets/pic'
#ROOT_DIR = '../example/src/main/assets/pic'
ROOT_DIR = 'D:/face_sdk/example/src/main/assets/pic'
def load_json(file_path):
with open(file_path, 'r') as file:
@@ -54,7 +55,8 @@ def remove_white_border(image):
def resize_image(image_path):
image = Image.open(image_path).convert('RGBA')
image = remove_white_border(image)
return image.resize(RESIZE_TO)
image = image.resize(RESIZE_TO)
return image
def main(json_file_path):
# 确保使用完整路径
@@ -92,4 +94,4 @@ def main(json_file_path):
json.dump(new_data, outfile, indent=4)
# 使用示例
main('motion_data.json')
main('motion_data_ex2.json')
+3 -2
View File
@@ -120,6 +120,7 @@ def collect_png_from_subfolders(base_path=".", output_file="../example/src/main/
# 使用方法
if __name__ == "__main__":
# 可以指定要遍历的基础路径,默认为当前目录
base_path_to_scan = '../example/src/main/assets/pic' # 当前目录
# base_path_to_scan = '../example/src/main/assets/pic' # 当前目录
base_path_to_scan = 'D:/face_sdk/example/src/main/assets/pic' # 当前目录
collect_png_from_subfolders(base_path_to_scan)
collect_png_from_subfolders(base_path_to_scan, 'D:/face_sdk/example/src/main/assets/pic/motion_data_ex2.json')