public string Execute(FileItem item, string infile, string dest, ValuePairEnumerator configData) { var conf = new ChromakeyViewModel(configData); dest = Path.Combine(Path.GetDirectoryName(dest), Path.GetFileNameWithoutExtension(dest) + ".jpg"); KalikoImage image = new KalikoImage(infile); var x = (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString(conf.BackgroundColor); var filter = new ChromaKeyFilter(); filter.KeyColor = Color.FromArgb(x.R, x.G, x.B); filter.ToleranceHue = conf.Hue; filter.ToleranceSaturnation = conf.Saturnation/100f; filter.ToleranceBrightness = conf.Brigthness / 100f; image.ApplyFilter(filter); var res = image.Clone(); if (conf.UnsharpMask) res.ApplyFilter(new UnsharpMaskFilter(1.4f, 1.32f, 5)); var backdrop = new KalikoImage(conf.BackgroundFile); backdrop = backdrop.Scale(new FitScaling(image.Width, image.Height)); backdrop.BlitImage(res); backdrop.SaveJpg(dest, 90); return dest; }
// generate a thumbnail while removing transparency and preserving aspect ratio public static async Task<string> GenerateThumbFromUrl(string sourceUrl) { var randomFileName = GenerateRandomFilename(); var request = WebRequest.Create(sourceUrl); request.Timeout = 300; var response = request.GetResponse(); var originalImage = new KalikoImage(response.GetResponseStream()) { BackgroundColor = Color.Black }; originalImage.Scale(new PadScaling(MaxWidth, MaxHeight)).SaveJpg(DestinationPath + '\\' + randomFileName + ".jpg", 90); // call upload to storage method if CDN config is enabled if (MvcApplication.UseContentDeliveryNetwork) { string tempThumbLocation = DestinationPath + '\\' + randomFileName + ".jpg"; if (FileExists(tempThumbLocation)) { await UploadBlobToStorageAsync(tempThumbLocation); // delete local file after uploading to CDN File.Delete(tempThumbLocation); } } return randomFileName + ".jpg"; }
// store uploaded avatar public static async Task<bool> GenerateAvatar(Image inputImage, string userName, string mimetype) { try { // call upload to storage if CDN config is enabled if (Settings.UseContentDeliveryNetwork) { string tempAvatarLocation = DestinationPathAvatars + '\\' + userName + ".jpg"; if (FileExists(tempAvatarLocation, DestinationPathAvatars)) { await UploadBlobToStorageAsync(tempAvatarLocation, "avatars"); // delete local file after uploading to CDN File.Delete(tempAvatarLocation); } return true; } // store avatar locally var originalImage = new KalikoImage(inputImage); originalImage.Scale(new PadScaling(MaxWidth, MaxHeight)).SaveJpg(DestinationPathAvatars + '\\' + userName + ".jpg", 90); return true; } catch (Exception ex) { return false; } }
// store uploaded avatar public static async Task<bool> GenerateAvatar(Image inputImage, string userName, string mimetype) { try { // store avatar locally var originalImage = new KalikoImage(inputImage); originalImage.Scale(new PadScaling(MaxWidth, MaxHeight)).SaveJpg(DestinationPathAvatars + '\\' + userName + ".jpg", 90); if (!Settings.UseContentDeliveryNetwork) return true; // call upload to storage since CDN is enabled in config string tempAvatarLocation = DestinationPathAvatars + '\\' + userName + ".jpg"; // the avatar file was not found at expected path, abort if (!FileSystemUtility.FileExists(tempAvatarLocation, DestinationPathAvatars)) return false; // upload to CDN await CloudStorageUtility.UploadBlobToStorageAsync(tempAvatarLocation, "avatars"); // delete local file after uploading to CDN File.Delete(tempAvatarLocation); return true; } catch (Exception ex) { return false; } }
private void CreateThumb(string path, string localThumbPath) { EnsureThumbnailPath(); var image = new KalikoImage(path); var thumbnail = image.Scale(new CropScaling(128,128)); thumbnail.SaveJpg(localThumbPath, 85); }
static void Main(string[] args) { KalikoImage image = new KalikoImage("testimage.jpg"); image.BackgroundColor = Color.Aquamarine; image.Scale(new FitScaling(100, 100)).SaveJpg("thumbnail-fit.jpg", 90); image.Scale(new CropScaling(100,100)).SaveJpg("thumbnail-crop.jpg", 90); image.Scale(new PadScaling(100, 100)).SaveJpg("thumbnail-pad.jpg", 90); KalikoImage sharpimg = image.Scale(new CropScaling(100, 100)); sharpimg.ApplyFilter(new UnsharpMaskFilter(1.2f, 0.3f, 1)); sharpimg.SaveJpg("thumbnail-unsharpened.jpg", 90); sharpimg.ApplyFilter(new DesaturationFilter()); sharpimg.SaveJpg("thumbnail-gray.jpg", 90); sharpimg.ApplyFilter(new ContrastFilter(30)); sharpimg.SaveJpg("thumbnail-contrast.jpg", 90); }
// generate a thumbnail while removing transparency and preserving aspect ratio public static string GenerateThumbFromUrl(string sourceUrl) { var randomFileName = GenerateRandomFilename(); var request = WebRequest.Create(sourceUrl); request.Timeout = 300; var response = request.GetResponse(); var originalImage = new KalikoImage(response.GetResponseStream()) { BackgroundColor = Color.Black }; originalImage.Scale(new PadScaling(MaxWidth, MaxHeight)).SaveJpg(DestinationPath + '\\' + randomFileName + ".jpg", 90); return randomFileName + ".jpg"; }
private async Task ConvertBackgroundBlurAsync(bool overwrite) { await Task.Run(() => { filesToZip.Add(LimProjectManager.LapFolder + "/Layesta/background_blur.png"); if (File.Exists(LimProjectManager.LapFolder + "/Layesta/background_blur.png") && !overwrite) { return; } Kaliko.ImageLibrary.KalikoImage k = new Kaliko.ImageLibrary.KalikoImage(LimProjectManager.LapFolder + "/Layesta/background.jpg"); k = k.Scale(new Kaliko.ImageLibrary.Scaling.PadScaling((int)(64f / k.Height *k.Width), 64)); k.ApplyFilter(new Kaliko.ImageLibrary.Filters.GaussianBlurFilter(5)); k.SavePng(LimProjectManager.LapFolder + "/Layesta/background_blur.png"); }); }
// TODO: implement CDN routing for avatars public static bool GenerateAvatar(Image inputImage, string userName, string mimetype) { try { string DestinationPath = HttpContext.Current.Server.MapPath("~/Storage/Avatars"); var originalImage = new KalikoImage(inputImage); originalImage.Scale(new PadScaling(MaxWidth, MaxHeight)).SaveJpg(DestinationPath + '\\' + userName + ".jpg", 90); return true; } catch (Exception ex) { return false; } }
public Task<Imagem> UploadInsert(int id) { try { //cria a parta obra if (Request.Content.IsMimeMultipartContent()) { var pathImagem = HttpContext.Current.Server.MapPath("~/Content/images/site/galeria"); var pathThumb = HttpContext.Current.Server.MapPath("~/Content/images/site/galeria/thumbs"); var streamProvider = new GuidMultipartFormDataStreamProvider(pathImagem); var imagem = new Imagem(); var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<Imagem>(t => { var fileName = ""; //verifica se tem imagem if (streamProvider.FileData.Count > 0) { //altera o nome da imagem fileName = streamProvider.GetLocalFileName(streamProvider.FileData[0].Headers); //cria o thumb var combine = Path.Combine(pathImagem, fileName); KalikoImage image = new KalikoImage(combine); KalikoImage thumb = image.Scale(new CropScaling(150, 150)); image.BackgroundColor = Color.White; thumb.SaveJpg(Path.Combine(pathThumb, fileName), 99); //dispose das imagens thumb.Dispose(); image.Dispose(); //inclui no banco de dados imagem.IdSite = id; imagem.Nome = fileName; imagem.Url = fileName; imagem.Thumbnail = fileName; imagem.IsPublico = true; imagem = _service.Imagem.Create(imagem); } return imagem; }); return task; } else { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted")); } } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, ex.Message)); } }
public Task<string> Upload(int id) { try { //cria a parta obra if (Request.Content.IsMimeMultipartContent()) { var pathImagem = HttpContext.Current.Server.MapPath("~/Content/images/site/banner"); var pathThumb = HttpContext.Current.Server.MapPath("~/Content/images/site/banner/thumbs"); var streamProvider = new GuidMultipartFormDataStreamProvider(pathImagem); var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<string>(t => { var fileName = ""; //verifica se tem imagem if (streamProvider.FileData.Count > 0) { //altera o nome da imagem fileName = streamProvider.GetLocalFileName(streamProvider.FileData[0].Headers); //cria o thumb var combine = Path.Combine(pathImagem, fileName); KalikoImage image = new KalikoImage(combine); KalikoImage thumb = image.Scale(new CropScaling(150, 150)); image.BackgroundColor = Color.White; thumb.SaveJpg(Path.Combine(pathThumb, fileName), 99); //dispose das imagens thumb.Dispose(); image.Dispose(); //verifica se é para atualizar a logomarca if (id > 0) { var banner = _service.Banner.Get(id); banner.Imagem = fileName; banner.Thumbnail = fileName; _service.Banner.Update(banner); } } return fileName; }); return task; } else { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted")); } } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, ex.Message)); } }
IEnumerator UploadCoroutine() { MessageBoxManager.Instance.ShowMessage(LimLanguageManager.TextDict["Layesta_Submission_Upload1"].Replace("<br>", "\n")); yield return(null); string path = WindowsDialogUtility.OpenFileDialog(LimLanguageManager.TextDict["Layesta_Submission_Load"], #if UNITY_EDITOR "layesta" #else "Layesta File|*.layesta" #endif , null); if (path == null) { yield break; } bool validate = LimLayestaReader.Validate(path); if (!validate) { UpdateUploadStatus("Layesta_Submission_UploadErr1"); yield break; } byte[] img = LimLayestaReader.LoadBackgroundImage(path); MemoryStream ms = new MemoryStream(img); MemoryStream msOut = new MemoryStream(); Kaliko.ImageLibrary.KalikoImage k = new Kaliko.ImageLibrary.KalikoImage(ms); k = k.Scale(new Kaliko.ImageLibrary.Scaling.PadScaling(640, 360)); k.SaveJpg(msOut, 80); ms.Close(); byte[] cov = msOut.GetBuffer(); msOut.Close(); UpdateUploadStatus("Layesta_Submission_Upload6"); #region Update Info byte[] buf = lzip.entry2Buffer(path, "info.bytes"); ms = new MemoryStream(buf); BinaryReader br = new BinaryReader(ms); level.ShouldDisplay = ShouldDisplay.isOn; level.Title = br.ReadString(); level.Difficulties = ""; br.ReadString(); int count = br.ReadInt32(); for (int i = 0; i < count; ++i) { level.Difficulties += (br.ReadString() + ((i == count - 1) ? "" : " ")); } br.ReadInt32(); br.ReadInt32(); if (br.BaseStream.Length > br.BaseStream.Position) { level.SongArtist = br.ReadString(); } if (br.BaseStream.Length > br.BaseStream.Position) { br.ReadInt32(); } br.Close(); ms.Close(); UnityWebRequest web = new UnityWebRequest { downloadHandler = new DownloadHandlerBuffer(), uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(level))), url = $"https://la.schwarzer.wang/layestalevel/update", method = "POST" }; web.SetRequestHeader("Authorization", $"Bearer {LimLayestaSubmissionManager.Instance.Bearer}"); web.SetRequestHeader("Content-Type", $"application/json; charset=utf-8"); web.SetRequestHeader("Accept", $"application/json; charset=utf-8"); yield return(web.SendWebRequest()); if (!string.IsNullOrWhiteSpace(web.error)) { UpdateUploadStatus("Layesta_Submission_UploadErr2"); yield break; } Debug.Log(web.downloadHandler.text); LayestaLevelResponse infoRet = JsonConvert.DeserializeObject <LayestaLevelResponse>(web.downloadHandler.text); if (!infoRet.Succeed) { if (infoRet.ErrorCode == ErrorCode.MissingInfo) { UpdateUploadStatus("Layesta_Submission_UploadErr3"); } else { UpdateUploadStatus("Layesta_Submission_UploadErr2"); } yield break; } #endregion UpdateUploadStatus("Layesta_Submission_Upload2"); #region Get Layesta Upload web = new UnityWebRequest { downloadHandler = new DownloadHandlerBuffer(), url = $"https://la.schwarzer.wang/auth/oss/upload/layesta/{level.Guid}", method = "GET" }; web.SetRequestHeader("Authorization", $"Bearer {LimLayestaSubmissionManager.Instance.Bearer}"); yield return(web.SendWebRequest()); if (web.responseCode == 401) { LimLayestaSubmissionManager.Instance.TokenInvalid(); yield break; } if (!string.IsNullOrWhiteSpace(web.error)) { yield break; } string ret = web.downloadHandler.text; JObject response = JObject.Parse(ret); if (!response["Succeed"].Value <bool>()) { MessageBoxManager.Instance.ShowMessage(((ErrorCode)response["ErrorCode"].Value <int>()).ToString()); yield break; } #endregion string layestaUrl = response["Uri"].Value <string>(); string layestaCb = response["Callback"].Value <string>(); UpdateUploadStatus("Layesta_Submission_Upload3"); #region Get Cover Upload web = new UnityWebRequest { downloadHandler = new DownloadHandlerBuffer(), url = $"https://la.schwarzer.wang/auth/oss/upload/cover/{level.Guid}", method = "GET" }; web.SetRequestHeader("Authorization", $"Bearer {LimLayestaSubmissionManager.Instance.Bearer}"); yield return(web.SendWebRequest()); if (web.responseCode == 401) { LimLayestaSubmissionManager.Instance.TokenInvalid(); yield break; } if (!string.IsNullOrWhiteSpace(web.error)) { yield break; } ret = web.downloadHandler.text; response = JObject.Parse(ret); if (!response["Succeed"].Value <bool>()) { MessageBoxManager.Instance.ShowMessage(((ErrorCode)response["ErrorCode"].Value <int>()).ToString()); yield break; } #endregion string coverUrl = response["Uri"].Value <string>(); string coverCb = response["Callback"].Value <string>(); UpdateUploadStatus("Layesta_Submission_Upload4"); #region Upload Layesta web = new UnityWebRequest { downloadHandler = new DownloadHandlerBuffer(), uploadHandler = new UploadHandlerRaw(File.ReadAllBytes(path)), url = layestaUrl, method = "PUT" }; web.SetRequestHeader("Content-Type", ""); web.SetRequestHeader("User-Agent", LimLayestaSubmissionManager.Instance.Id); web.SetRequestHeader("x-oss-callback", layestaCb); ProgressBarManager.Instance.ShowProgress(() => web.isDone, () => web.uploadProgress); yield return(web.SendWebRequest()); if (!string.IsNullOrWhiteSpace(web.error)) { UpdateUploadStatus("Layesta_Submission_UploadErr2"); Debug.Log(web.downloadHandler.text); yield break; } ret = web.downloadHandler.text; Debug.Log(ret); response = JObject.Parse(ret); if (response["Message"].Value <string>() != "Succeed") { UpdateUploadStatus("Layesta_Submission_UploadErr2"); MessageBoxManager.Instance.Message.text += response["Message"].Value <string>(); yield break; } #endregion UpdateUploadStatus("Layesta_Submission_Upload5"); #region Upload Cover web = new UnityWebRequest { downloadHandler = new DownloadHandlerBuffer(), uploadHandler = new UploadHandlerRaw(cov), url = coverUrl, method = "PUT" }; web.SetRequestHeader("Content-Type", ""); web.SetRequestHeader("User-Agent", LimLayestaSubmissionManager.Instance.Id); web.SetRequestHeader("x-oss-callback", coverCb); ProgressBarManager.Instance.ShowProgress(() => web.isDone, () => web.uploadProgress); yield return(web.SendWebRequest()); if (!string.IsNullOrWhiteSpace(web.error)) { UpdateUploadStatus("Layesta_Submission_UploadErr2"); Debug.Log(web.downloadHandler.text); yield break; } ret = web.downloadHandler.text; Debug.Log(ret); response = JObject.Parse(ret); if (response["Message"].Value <string>() != "Succeed") { UpdateUploadStatus("Layesta_Submission_UploadErr2"); MessageBoxManager.Instance.Message.text += response["Message"].Value <string>(); yield break; } #endregion UpdateUploadStatus("Layesta_Submission_Upload7"); LimLayestaSubmissionManager.Instance.EmptyList(); LimLayestaSubmissionManager.Instance.Refresh(); }
public Task<FroalaUploadHelper> Upload() { try { //cria a parta obra if (Request.Content.IsMimeMultipartContent()) { var pathImagem = HttpContext.Current.Server.MapPath("~/Content/images/site/portifolio"); var pathThumb = HttpContext.Current.Server.MapPath("~/Content/images/site/portifolio/thumbs"); var imagePath = @"../Content/images/site/portifolio"; var streamProvider = new CustomMultipartFormDataStreamProvider(pathImagem); var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<FroalaUploadHelper>(t => { var fileName = ""; //verifica se tem imagem if (streamProvider.FileData.Count > 0) { //altera o nome da imagem fileName = streamProvider.GetLocalFileName(streamProvider.FileData[0].Headers); //cria o thumb var combine = Path.Combine(pathImagem, fileName); KalikoImage image = new KalikoImage(combine); KalikoImage thumb = image.Scale(new CropScaling(150, 150)); image.BackgroundColor = Color.White; thumb.SaveJpg(Path.Combine(pathThumb, fileName), 99); //dispose das imagens thumb.Dispose(); image.Dispose(); } return new FroalaUploadHelper { link = imagePath + "/" + fileName }; }); return task; } else { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted")); } } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, ex.Message)); } }