Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions src/Functions/SantaTalk.Functions/sendPicture.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
public static class SendPicture
{
static string subscriptionKey = Environment.GetEnvironmentVariable("APIKey");
static string endpoint = Environment.GetEnvironmentVariable("APIEndPoint");
static string subscriptionKeyFace = Environment.GetEnvironmentVariable("APIKey");
static string endpointFace = Environment.GetEnvironmentVariable("APIEndPoint");

[FunctionName("SendPicture")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");

var filesProvider = await req.Content.ReadAsMultipartAsync();
var fileContents = filesProvider.Contents.FirstOrDefault();


byte[] payload = await fileContents.ReadAsByteArrayAsync();
Stream stream = new MemoryStream(payload);

faceFactory ff = new faceFactory(endpointFace, subscriptionKeyFace);
var result = ff.analyzeImageAsync(stream);
Task.WaitAll(result);

string responseBody = JsonConvert.SerializeObject(result.Result);
return (ActionResult)new OkObjectResult(responseBody);

}



}

public class faceFactory
{

const string RECOGNITION_MODEL2 = RecognitionModel.Recognition02;
const string RECOGNITION_MODEL1 = RecognitionModel.Recognition01;
private string endpoint { get; set; }
private string subscriptionKey { get; set; }
public faceFactory(string _endpoint, string _subscriptionKey)
{
endpoint = _endpoint;
subscriptionKey = _subscriptionKey;
}

public async Task<List<FaceInfo>> analyzeImageAsync(Stream st)
{
IFaceClient client = Authenticate(endpoint, subscriptionKey);

return await DetectFace(client, st, RECOGNITION_MODEL2);

}

protected Stream GetStream(String gazouUrl)
{
Stream rtn = null;
System.Net.HttpWebRequest aRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(gazouUrl);
System.Net.HttpWebResponse aResponse = (System.Net.HttpWebResponse)aRequest.GetResponse();
return aResponse.GetResponseStream();

using (StreamReader sReader = new StreamReader(aResponse.GetResponseStream(), System.Text.Encoding.Default))
{
rtn = sReader.BaseStream;
}
return rtn;
}


private static IFaceClient Authenticate(string endpoint, string key)
{
return new FaceClient(new Microsoft.Azure.CognitiveServices.Vision.ComputerVision.ApiKeyServiceClientCredentials(key)) { Endpoint = endpoint };
}

public static async Task<List<FaceInfo>> DetectFace(IFaceClient client, Stream image, string recognitionModel)
{
List<FaceInfo> facesI = new List<FaceInfo>();
try
{


Console.WriteLine("========DETECT FACES========");
Console.WriteLine();
IList<DetectedFace> detectedFaces = await client.Face.DetectWithStreamAsync(image,
returnFaceAttributes: new List<FaceAttributeType> { FaceAttributeType.Accessories, FaceAttributeType.Age,
FaceAttributeType.Blur, FaceAttributeType.Emotion, FaceAttributeType.Exposure, FaceAttributeType.FacialHair,
FaceAttributeType.Gender, FaceAttributeType.Glasses, FaceAttributeType.Hair, FaceAttributeType.HeadPose,
FaceAttributeType.Makeup, FaceAttributeType.Noise, FaceAttributeType.Occlusion, FaceAttributeType.Smile },
recognitionModel: recognitionModel);

Console.WriteLine($"{detectedFaces.Count} face(s) detected from image .");
// Parse and print all attributes of each detected face.
foreach (var face in detectedFaces)
{
Console.WriteLine($"Face attributes ");
// Get emotion on the face
string emotionType = string.Empty;
double emotionValue = 0.0;
Emotion emotion = face.FaceAttributes.Emotion;
if (emotion.Anger > emotionValue) { emotionValue = emotion.Anger; emotionType = "Anger"; }
if (emotion.Contempt > emotionValue) { emotionValue = emotion.Contempt; emotionType = "Contempt"; }
if (emotion.Disgust > emotionValue) { emotionValue = emotion.Disgust; emotionType = "Disgust"; }
if (emotion.Fear > emotionValue) { emotionValue = emotion.Fear; emotionType = "Fear"; }
if (emotion.Happiness > emotionValue) { emotionValue = emotion.Happiness; emotionType = "Happiness"; }
if (emotion.Neutral > emotionValue) { emotionValue = emotion.Neutral; emotionType = "Neutral"; }
if (emotion.Sadness > emotionValue) { emotionValue = emotion.Sadness; emotionType = "Sadness"; }
if (emotion.Surprise > emotionValue) { emotionType = "Surprise"; }
Console.WriteLine($"Emotion : {emotionType}");
FaceInfo f = new FaceInfo();
f.Age = face.FaceAttributes.Age;
f.emotion = emotionType;
f.Gender = face.FaceAttributes.Gender.Value.ToString();
f.smile = face.FaceAttributes.Smile;
facesI.Add(f);
Console.WriteLine();
}
}
catch (Exception error)
{


}
return facesI;
}
}
21 changes: 21 additions & 0 deletions src/Functions/SantaTalk.Models/FaceInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace SantaTalk.Models
{
public class FaceInfo
{

public double Age { get; set; }
public double smile { get; set; }

public string Gender { get; set; }

/// <summary>
/// Valids values ("Anger","Contempt","Disgust","Fear","Happiness","Neutral","Sadness","Surprise")
/// </summary>
public string emotion { get; set; }
}
}

2 changes: 2 additions & 0 deletions src/SantaTalk.Android/MainActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Android.Views;
using Android.Widget;
using Android.OS;
using Plugin.CurrentActivity;

namespace SantaTalk.Droid
{
Expand All @@ -21,6 +22,7 @@ protected override void OnCreate(Bundle savedInstanceState)

Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
CrossCurrentActivity.Current.Init(this, savedInstanceState);
FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true);
LoadApplication(new App());
}
Expand Down
18 changes: 14 additions & 4 deletions src/SantaTalk.Android/Properties/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.codemilltech.santatalk">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:label="SantaTalk.Android" android:networkSecurityConfig="@xml/network_security_config"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.codemilltech.santatalk" android:installLocation="auto">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
<application android:label="SantaTalk.Android" android:networkSecurityConfig="@xml/network_security_config">
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
</provider>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>
15 changes: 9 additions & 6 deletions src/SantaTalk.Android/Resources/Resource.designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions src/SantaTalk.Android/Resources/xml/file_paths.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="my_images" path="Pictures" />
<external-files-path name="my_movies" path="Movies" />
</paths>
67 changes: 43 additions & 24 deletions src/SantaTalk.Android/SantaTalk.Android.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
Expand Down Expand Up @@ -31,6 +31,10 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidLinkMode>None</AndroidLinkMode>
<AotAssemblies>false</AotAssemblies>
<EnableLLVM>false</EnableLLVM>
<AndroidEnableProfiledAot>false</AndroidEnableProfiledAot>
<BundleAssemblies>false</BundleAssemblies>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Expand All @@ -52,6 +56,9 @@
<Reference Include="System.Numerics.Vectors" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.FFImageLoading.Transformations">
<Version>2.4.11.982</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="4.4.0.991265" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
<PackageReference Include="Xamarin.FFImageLoading.Forms">
Expand Down Expand Up @@ -98,43 +105,50 @@
<AndroidResource Include="Resources\mipmap-xxxhdpi\icon.png" />
<AndroidResource Include="Resources\mipmap-xxxhdpi\launcher_foreground.png" />
<AndroidResource Include="Resources\xml\network_security_config.xml">
<SubType></SubType>
<Generator></Generator>
<SubType>
</SubType>
<Generator>
</Generator>
</AndroidResource>
<AndroidResource Include="Resources\drawable-xxxhdpi\star.png">
<SubType></SubType>
<Generator></Generator>
<SubType>
</SubType>
<Generator>
</Generator>
</AndroidResource>
<AndroidResource Include="Resources\drawable-xxhdpi\star.png">
<SubType></SubType>
<Generator></Generator>
<SubType>
</SubType>
<Generator>
</Generator>
</AndroidResource>
<AndroidResource Include="Resources\drawable-xhdpi\star.png">
<SubType></SubType>
<Generator></Generator>
<SubType>
</SubType>
<Generator>
</Generator>
</AndroidResource>
<AndroidResource Include="Resources\drawable-mdpi\star.png">
<SubType></SubType>
<Generator></Generator>
<SubType>
</SubType>
<Generator>
</Generator>
</AndroidResource>
<AndroidResource Include="Resources\drawable-ldpi\star.png">
<SubType></SubType>
<Generator></Generator>
<SubType>
</SubType>
<Generator>
</Generator>
</AndroidResource>
<AndroidResource Include="Resources\drawable-hdpi\star.png">
<SubType></SubType>
<Generator></Generator>
<SubType>
</SubType>
<Generator>
</Generator>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<Folder Include="Resources\drawable\" />
<Folder Include="Resources\xml\" />
<Folder Include="Resources\drawable-hdpi\" />
<Folder Include="Resources\drawable-ldpi\" />
<Folder Include="Resources\drawable-mdpi\" />
<Folder Include="Resources\drawable-xhdpi\" />
<Folder Include="Resources\drawable-xxhdpi\" />
<Folder Include="Resources\drawable-xxxhdpi\" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SantaTalk\SantaTalk.csproj">
Expand All @@ -148,5 +162,10 @@
<AndroidAsset Include="Assets\futura_heavy.ttf" />
<AndroidAsset Include="Assets\futura_medium.ttf" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
</Project>
<ItemGroup>
<AndroidResource Include="Resources\xml\file_paths.xml">
<SubType>Designer</SubType>
</AndroidResource>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
</Project>
3 changes: 3 additions & 0 deletions src/SantaTalk.iOS/SantaTalk.iOS.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,9 @@
<Reference Include="System.Numerics.Vectors" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Xamarin.FFImageLoading.Transformations">
<Version>2.4.11.982</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="4.4.0.991265" />
<PackageReference Include="Xamarin.Essentials" Version="1.3.1" />
<PackageReference Include="Xamarin.FFImageLoading.Forms">
Expand Down
Loading