public static string UserImageStorage(COMimage image, string base64) { int counter = BLLimage.Getimages().FindAll(img => img.UserId == image.UserId).Count; Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", @"C:\keys\wordproject-29b2e0d3e0d5.json"); string imageName = BLLuser.GetUserById(image.UserId).CategoryName + counter + ".jpg"; string path = System.IO.Path.GetTempFileName(); byte[] byte1 = Convert.FromBase64String(base64); try { File.WriteAllBytes(path, byte1); } catch (Exception e) { throw (e); } //string imageName = "bla2"; string bucketName = "usersimages"; var storage = StorageClient.Create(); using (var f = File.OpenRead(path)) try { var res = storage.UploadObject(bucketName, imageName, null, f); //(bucketName +"/"+ folderName, imageName, null, f); image.URL = "https://storage.googleapis.com/" + bucketName + "/" + imageName; } catch (Exception) { throw; } return(image.URL); }
public static List <string> VisionApi(int categoryId, int UserId, string URL, Dictionary <string, int> categoriesCounter, Dictionary <string, int> voicesCounter) { Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", @"C:\keys\wordproject-29b2e0d3e0d5.json"); // Instantiates a client var client = ImageAnnotatorClient.Create(); // Load the image file into memory var image = Image.FromFile(URL); // Performs label detection on the image file var response = client.DetectLocalizedObjects(image);// //found most common word in objects list Dictionary <string, int> countingDic = new Dictionary <string, int>(); string common = string.Empty; foreach (var annotation in response) { if (countingDic.ContainsKey(annotation.Name)) { int max = 1; countingDic[annotation.Name]++; if (max < countingDic[annotation.Name]) { max = countingDic[annotation.Name]; common = annotation.Name; } } else { countingDic.Add(annotation.Name, 1); } } COMimage img = new COMimage(); string imgUrl; List <string> ans = new List <string>(); int c = 0; int imgId = -1; try { imgUrl = Storage(categoryId, URL, categoriesCounter); // if image in storage //insert image info db img.CategoryID = categoryId; img.URL = imgUrl; img.UserId = UserId; //DALimageObject.Refresh(); img.BeginIndex = BLLobject.GetObjects().Count; DALimage.Addimage(img); imgId = DALimage.GetImageIdByURL(img.URL); //insert objects into db Dictionary <Bounding, string> finalList = new Dictionary <Bounding, string>(); foreach (var annotation in response) { List <double> x = new List <double>(); List <double> y = new List <double>(); foreach (var item in annotation.BoundingPoly.NormalizedVertices) { x.Add(item.X); y.Add(item.Y); } bool help = false; Bounding bounding = new Bounding(x, y); //if there is item with same bounding box and the existing is common name and the new not- swap them. foreach (var item in finalList) { if (item.Key.IsEqual(bounding)) { help = true; if (item.Value == common && annotation.Name != common) { finalList.Remove(item.Key); finalList.Add(bounding, annotation.Name); } } } if (help == false) { finalList.Add(bounding, annotation.Name); } else { help = true; } } foreach (var item in finalList) { COMimageObject obj = new COMimageObject(); obj.ImageID = imgId; obj.Name = item.Value; obj.X1 = item.Key.X1; obj.X2 = item.Key.X2; obj.X3 = item.Key.X3; obj.X4 = item.Key.X4; obj.Y1 = item.Key.Y1; obj.Y2 = item.Key.Y2; obj.Y3 = item.Key.Y3; obj.Y4 = item.Key.Y4; try { obj.VoiceURL = BLLtextToSpeach.VoiceStorage(UserId, BLLimage.GetImageById(obj.ImageID).CategoryID, BLLtextToSpeach.TextToSpeach(obj.Name), voicesCounter); } catch (Exception e) { throw e; } DALimageObject.AddObject(obj); c++; ans.Add(obj.Name); } } catch (Exception e) { throw e; } return(ans); }