summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-03-19 14:21:17 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-03-19 14:21:17 -0700
commit670d9b82ab300786cf24c6893f83b406e875ed5a (patch)
treec2e299e8e7aadf45728eaf4b886c039864f5c02c /src
parent7e7035eaf5d8d8a72f5f61f05beb79b842e4f358 (diff)
parent692eabb9f888c384bb8520dfb9f5b3fe3ba02e24 (diff)
downloadandroid_packages_apps_Gallery2-670d9b82ab300786cf24c6893f83b406e875ed5a.tar.gz
android_packages_apps_Gallery2-670d9b82ab300786cf24c6893f83b406e875ed5a.tar.bz2
android_packages_apps_Gallery2-670d9b82ab300786cf24c6893f83b406e875ed5a.zip
Merge "Gallery2: Move files to the correct location"
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/filtershow/editors/EditorMakeup.java44
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupBigeye.java54
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupSoften.java52
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupTrimface.java55
-rw-r--r--src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupWhiten.java53
-rw-r--r--src/com/android/gallery3d/filtershow/filters/SimpleMakeupImageFilter.java82
-rw-r--r--src/com/thundersoft/hz/selfportrait/detect/FaceDetect.java79
-rw-r--r--src/com/thundersoft/hz/selfportrait/detect/FaceInfo.java39
-rw-r--r--src/com/thundersoft/hz/selfportrait/makeup/engine/MakeupEngine.java87
9 files changed, 545 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/filtershow/editors/EditorMakeup.java b/src/com/android/gallery3d/filtershow/editors/EditorMakeup.java
new file mode 100644
index 000000000..331d31b57
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/editors/EditorMakeup.java
@@ -0,0 +1,44 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.android.gallery3d.filtershow.editors;
+
+import android.view.View;
+import android.widget.SeekBar;
+
+import com.android.gallery3d.R;
+
+public class EditorMakeup extends BasicEditor {
+ public static int ID = R.id.editorMakeup;
+ private final String LOGTAG = "EditorMakeup";
+
+ public EditorMakeup() {
+ super(ID, R.layout.filtershow_default_editor, R.id.basicEditor);
+ }
+
+ @Override
+ public void setUtilityPanelUI(View actionButton, View editControl) {
+ super.setUtilityPanelUI(actionButton, editControl);
+ mSeekBar = (SeekBar) editControl.findViewById(R.id.primarySeekBar);
+ if (mSeekBar != null) {
+ mSeekBar.setVisibility(View.INVISIBLE);
+ }
+ }
+
+
+
+}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupBigeye.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupBigeye.java
new file mode 100644
index 000000000..64067881e
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupBigeye.java
@@ -0,0 +1,54 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.android.gallery3d.filtershow.filters;
+
+import android.graphics.Bitmap;
+
+import com.android.gallery3d.R;
+
+import com.thundersoft.hz.selfportrait.detect.FaceInfo;
+import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine;
+
+public class ImageFilterMakeupBigeye extends SimpleMakeupImageFilter {
+ private static final String SERIALIZATION_NAME = "BIGEYE";
+
+ public ImageFilterMakeupBigeye() {
+ mName = "Bigeye";
+ }
+
+ public FilterRepresentation getDefaultRepresentation() {
+ FilterBasicRepresentation representation =
+ (FilterBasicRepresentation) super.getDefaultRepresentation();
+ representation.setName("Bigeye");
+ representation.setSerializationName(SERIALIZATION_NAME);
+ representation.setFilterClass(ImageFilterMakeupBigeye.class);
+ representation.setTextId(R.string.text_makeup_bigeye);
+ representation.setOverlayOnly(true);
+ representation.setOverlayId(R.drawable.ic_ts_makeup_bigeye);
+ representation.setMinimum(0);
+ representation.setMaximum(100);
+ representation.setSupportsPartialRendering(true);
+ return representation;
+ }
+
+ protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height,
+ int value) {
+ MakeupEngine.doWarpFace(bitmap, bitmap, width, height, faceInfo.eye1, faceInfo.eye2,
+ faceInfo.mouth, value, 0);
+ }
+}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupSoften.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupSoften.java
new file mode 100644
index 000000000..8587158c3
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupSoften.java
@@ -0,0 +1,52 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.android.gallery3d.filtershow.filters;
+
+import android.graphics.Bitmap;
+
+import com.android.gallery3d.R;
+
+import com.thundersoft.hz.selfportrait.detect.FaceInfo;
+import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine;
+
+public class ImageFilterMakeupSoften extends SimpleMakeupImageFilter {
+ private static final String SERIALIZATION_NAME = "SOFTEN";
+
+ public ImageFilterMakeupSoften() {
+ mName = "Soften";
+ }
+
+ public FilterRepresentation getDefaultRepresentation() {
+ FilterBasicRepresentation representation =
+ (FilterBasicRepresentation) super.getDefaultRepresentation();
+ representation.setName("Soften");
+ representation.setSerializationName(SERIALIZATION_NAME);
+ representation.setFilterClass(ImageFilterMakeupSoften.class);
+ representation.setTextId(R.string.text_makeup_Soften);
+ representation.setOverlayOnly(true);
+ representation.setOverlayId(R.drawable.ic_ts_makeup_soften);
+ representation.setMinimum(0);
+ representation.setMaximum(100);
+ representation.setSupportsPartialRendering(true);
+ return representation;
+ }
+
+ protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height, int value) {
+ MakeupEngine.doProcessBeautify(bitmap, bitmap, width, height, faceInfo.face, value, 0);
+ }
+}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupTrimface.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupTrimface.java
new file mode 100644
index 000000000..4b0499036
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupTrimface.java
@@ -0,0 +1,55 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.android.gallery3d.filtershow.filters;
+
+import android.graphics.Bitmap;
+
+import com.android.gallery3d.R;
+
+import com.thundersoft.hz.selfportrait.detect.FaceInfo;
+import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine;
+
+public class ImageFilterMakeupTrimface extends SimpleMakeupImageFilter {
+ private static final String SERIALIZATION_NAME = "TRIMFACE";
+
+ public ImageFilterMakeupTrimface() {
+ mName = "Trimface";
+ }
+
+ public FilterRepresentation getDefaultRepresentation() {
+ FilterBasicRepresentation representation =
+ (FilterBasicRepresentation) super.getDefaultRepresentation();
+ representation.setName("Trimface");
+ representation.setSerializationName(SERIALIZATION_NAME);
+ representation.setFilterClass(ImageFilterMakeupTrimface.class);
+ representation.setTextId(R.string.text_makeup_trimface);
+ representation.setOverlayOnly(true);
+ representation.setOverlayId(R.drawable.ic_ts_makeup_trimface);
+ representation.setMinimum(0);
+ representation.setMaximum(100);
+ representation.setSupportsPartialRendering(true);
+ return representation;
+ }
+
+ protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height,
+ int value) {
+ MakeupEngine.doWarpFace(bitmap, bitmap, width, height, faceInfo.eye1, faceInfo.eye2,
+ faceInfo.mouth, 0, value);
+ }
+
+}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupWhiten.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupWhiten.java
new file mode 100644
index 000000000..e60be84d7
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/filters/ImageFilterMakeupWhiten.java
@@ -0,0 +1,53 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.android.gallery3d.filtershow.filters;
+
+import android.graphics.Bitmap;
+
+import com.android.gallery3d.R;
+
+import com.thundersoft.hz.selfportrait.detect.FaceInfo;
+import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine;
+
+public class ImageFilterMakeupWhiten extends SimpleMakeupImageFilter {
+ private static final String SERIALIZATION_NAME = "WHITEN";
+
+ public ImageFilterMakeupWhiten() {
+ mName = "Whiten";
+ }
+
+ public FilterRepresentation getDefaultRepresentation() {
+ FilterBasicRepresentation representation =
+ (FilterBasicRepresentation) super.getDefaultRepresentation();
+ representation.setName("Whiten");
+ representation.setSerializationName(SERIALIZATION_NAME);
+ representation.setFilterClass(ImageFilterMakeupWhiten.class);
+ representation.setTextId(R.string.text_makeup_whiten);
+ representation.setOverlayOnly(true);
+ representation.setOverlayId(R.drawable.ic_ts_makeup_whiten);
+ representation.setMinimum(0);
+ representation.setMaximum(100);
+ representation.setSupportsPartialRendering(true);
+ return representation;
+ }
+
+ protected void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height, int value) {
+ MakeupEngine.doProcessBeautify(bitmap, bitmap, width, height, faceInfo.face, 0, value);
+ }
+
+}
diff --git a/src/com/android/gallery3d/filtershow/filters/SimpleMakeupImageFilter.java b/src/com/android/gallery3d/filtershow/filters/SimpleMakeupImageFilter.java
new file mode 100644
index 000000000..584074c02
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/filters/SimpleMakeupImageFilter.java
@@ -0,0 +1,82 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.android.gallery3d.filtershow.filters;
+
+import android.graphics.Bitmap;
+import android.util.Log;
+
+import com.thundersoft.hz.selfportrait.detect.FaceDetect;
+import com.thundersoft.hz.selfportrait.detect.FaceInfo;
+
+public abstract class SimpleMakeupImageFilter extends SimpleImageFilter {
+ private static final String LOGTAG = "SimpleMakeupImageFilter";
+ protected static final int MAKEUP_INTENSITY = 50;
+
+ public static final boolean HAS_TS_MAKEUP = android.os.SystemProperties.getBoolean("persist.ts.postmakeup", false);
+
+ public SimpleMakeupImageFilter() {
+ }
+
+ public FilterRepresentation getDefaultRepresentation() {
+ FilterRepresentation representation = new FilterBasicRepresentation("Default", 0,
+ MAKEUP_INTENSITY, 100);
+ representation.setShowParameterValue(true);
+ return representation;
+ }
+
+ protected FaceInfo detectFaceInfo(Bitmap bitmap) {
+ FaceDetect faceDetect = new FaceDetect();
+ faceDetect.initialize();
+ FaceInfo[] faceInfos = faceDetect.dectectFeatures(bitmap);
+ faceDetect.uninitialize();
+
+ Log.v(LOGTAG, "SimpleMakeupImageFilter.detectFaceInfo(): detect faceNum is "
+ + (faceInfos != null ? faceInfos.length : "NULL"));
+ if (faceInfos == null || faceInfos.length <= 0) {
+ return null;
+ }
+
+ return faceInfos[0];
+ }
+
+ @Override
+ public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
+ if (getParameters() == null) {
+ return bitmap;
+ }
+ int w = bitmap.getWidth();
+ int h = bitmap.getHeight();
+ if(w % 2 != 0 || h % 2 != 0) {
+ return bitmap;
+ }
+ int value = getParameters().getValue();
+ applyHelper(bitmap, w, h, value);
+ return bitmap;
+ }
+
+ private void applyHelper(Bitmap bitmap, int w, int h, int value) {
+ FaceInfo faceInfo = detectFaceInfo(bitmap);
+ if(faceInfo != null) {
+ doMakeupEffect(bitmap, faceInfo, w, h, value);
+ }
+ }
+
+ abstract void doMakeupEffect(Bitmap bitmap, FaceInfo faceInfo, int width, int height,
+ int value);
+
+}
diff --git a/src/com/thundersoft/hz/selfportrait/detect/FaceDetect.java b/src/com/thundersoft/hz/selfportrait/detect/FaceDetect.java
new file mode 100644
index 000000000..a5c7fb043
--- /dev/null
+++ b/src/com/thundersoft/hz/selfportrait/detect/FaceDetect.java
@@ -0,0 +1,79 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.thundersoft.hz.selfportrait.detect;
+
+import android.graphics.Bitmap;
+import android.graphics.Rect;
+import android.util.Log;
+
+public class FaceDetect {
+ private static final String TAG = "FaceDetect";
+
+ private int mHandle = 0;
+
+ static {
+ try {
+ System.loadLibrary("ts_detected_face_jni");
+ } catch (UnsatisfiedLinkError e) {
+ e.printStackTrace();
+ Log.e(TAG, "ts_detected_face_jni library not found!");
+ }
+ }
+
+ /**
+ * initialize method,MUST called at first time.
+ */
+ public void initialize() {
+ mHandle = native_create();
+ }
+
+ /**
+ * uninitialize method,MUST called at last time.
+ */
+
+ public void uninitialize() {
+ native_destroy(mHandle);
+ }
+
+ /**
+ * dectectFeatures method,MUST called after initialize method and before
+ * uninitialize method.
+ *
+ * @param bmp, Android Bitmap instance,MUST not null.
+ * @return FaceInfo array if success, otherwise return null.
+ */
+ public FaceInfo[] dectectFeatures(Bitmap bmp) {
+ int count = native_detect(mHandle, bmp);
+ if (count < 1) {
+ return null;
+ }
+ FaceInfo[] res = new FaceInfo[count];
+ for (int i = 0; i < count; i++) {
+ FaceInfo face = new FaceInfo();
+ native_face_info(mHandle, i, face.face, face.eye1, face.eye2, face.mouth);
+ res[i] = face;
+ }
+ return res;
+ }
+
+ private static native int native_create();
+ private static native void native_destroy(int handle);
+ private static native int native_detect(int handle, Bitmap bmp);
+ private static native int native_face_info(int handle, int index, Rect face, Rect eye1,
+ Rect eye2, Rect mouth);
+}
diff --git a/src/com/thundersoft/hz/selfportrait/detect/FaceInfo.java b/src/com/thundersoft/hz/selfportrait/detect/FaceInfo.java
new file mode 100644
index 000000000..eee51f71b
--- /dev/null
+++ b/src/com/thundersoft/hz/selfportrait/detect/FaceInfo.java
@@ -0,0 +1,39 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.thundersoft.hz.selfportrait.detect;
+
+import android.graphics.Rect;
+
+public class FaceInfo {
+ /**
+ * face rectangle
+ */
+ public Rect face = new Rect();
+ /**
+ * left eye rectangle
+ */
+ public Rect eye1 = new Rect();
+ /**
+ * right eye rectangle
+ */
+ public Rect eye2 = new Rect();
+ /**
+ * mount rectangle
+ */
+ public Rect mouth = new Rect();
+}
diff --git a/src/com/thundersoft/hz/selfportrait/makeup/engine/MakeupEngine.java b/src/com/thundersoft/hz/selfportrait/makeup/engine/MakeupEngine.java
new file mode 100644
index 000000000..8d58bcfef
--- /dev/null
+++ b/src/com/thundersoft/hz/selfportrait/makeup/engine/MakeupEngine.java
@@ -0,0 +1,87 @@
+/*
+* Copyright (C) 2014,2015 Thundersoft Corporation
+* All rights Reserved
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package com.thundersoft.hz.selfportrait.makeup.engine;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Rect;
+import android.util.Log;
+
+public class MakeupEngine {
+ static {
+ try {
+ System.loadLibrary("ts_face_beautify_jni");
+ } catch (UnsatisfiedLinkError e) {
+ e.printStackTrace();
+ Log.e(MakeupEngine.class.getName(), "ts_face_beautify_jni library not found!");
+ }
+ }
+
+ private static MakeupEngine mInstance;
+
+ private MakeupEngine() {
+
+ }
+
+ public static MakeupEngine getMakeupObj() {
+ if(mInstance == null) {
+ mInstance = new MakeupEngine();
+ }
+
+ return mInstance;
+ }
+
+ private Context mContext;
+
+ public void setContext(Context context) {
+ mContext = context;
+ }
+
+ public Context getContext() {
+ return mContext;
+ }
+
+ /**
+ * FUNCTION: doProcessBeautify
+ * Do process face region clean and whiten.
+ * @param inBitmap, the Bitmap instance which have face region, MUST not null.
+ * @param outBitmap, the result of process, MUST not null.
+ * @param frameWidth,frameHeight, the size of inBitmap.
+ * @param faceRect, the face region in inBitmap.
+ * @param cleanLevel, the level of clean.(0-100)
+ * @param whiteLevel, the level of white.(0-100)
+ */
+ public static native boolean doProcessBeautify(Bitmap inBitmap, Bitmap outBitmap, int frameWidth, int frameHeight,
+ Rect faceRect, int cleanLevel, int beautyLevel);
+
+ /**
+ * FUNCTION: doWarpFace
+ * Do process face region warp and big eye.
+ * @param inBitmap, the Bitmap instance which have face region, MUST not null.
+ * @param outBitmap, the result of process, MUST not null.
+ * @param frameWidth, the size of inBitmap.
+ * @param frameHeight, the size of inBitmap.
+ * @param leftEye, the left eye rectangle
+ * @param rightEye, the right eye rectangle
+ * @param mouth, the mouth rectangle
+ * @param bigEyeLevel, the level of big eye.(0-100)
+ * @param trimFaceLevel, the level of trim face.(0-100)
+ */
+ public static native boolean doWarpFace(Bitmap inBitmap, Bitmap outBitmap, int frameWidth, int frameHeight,
+ Rect leftEye, Rect rightEye, Rect mouth, int bigEyeLevel, int trimFaceLevel);
+}