public static string SaveImageResize(HttpPostedFileBase hpf, string Path, int NewSize, string Orientation) { ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg"); EncoderParameters myEncoderParameters = new EncoderParameters(1); myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 100L); Bitmap _File = (Bitmap)Bitmap.FromStream(hpf.InputStream); if (NewSize > 100) { _File = Imaging.Resize(_File, NewSize, Orientation); } if (!Directory.Exists(Path)) { Directory.CreateDirectory(HttpContext.Current.Server.MapPath(Path)); } string imageName = Transliteration.Translit(hpf.FileName.Substring(0, hpf.FileName.IndexOf("."))).Replace(" ", "_"); string extension = hpf.FileName.Substring(hpf.FileName.IndexOf(".")); string filePath = HttpContext.Current.Server.MapPath(Path + imageName + extension); if (File.Exists(filePath)) { File.Delete(filePath); } _File.Save(filePath, myImageCodecInfo, myEncoderParameters); _File.Dispose(); return(Path + imageName + extension); }
/// <summary> /// Конструктор /// </summary> static Importer() { // маппинг объектов и сущностей Mapper.Initialize(cfg => { cfg.CreateMap <Catalog, import_catalogs>() .ForMember(d => d.id, opt => opt.MapFrom(src => src.Id)) .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Title)) .ForMember(d => d.c_alias, opt => opt.MapFrom(src => Transliteration.Translit(src.Title))) .ForMember(d => d.d_date, opt => opt.MapFrom(src => DateTime.Now)) .ForMember(d => d.uui_parent, opt => opt.MapFrom(src => src.ParentId.Equals("0") ? Guid.Empty : Guid.Parse(src.ParentId))); cfg.CreateMap <Product, import_products>() .ForMember(d => d.id, opt => opt.MapFrom(src => src.Id)) .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Title)) .ForMember(d => d.c_code, opt => opt.MapFrom(src => src.Code)) .ForMember(d => d.n_count, opt => opt.MapFrom(src => src.Count)) .ForMember(d => d.d_date, opt => opt.MapFrom(src => src.Date)) .ForMember(d => d.c_barcode, opt => opt.MapFrom(src => src.BarcodeList .Select(s => s.Value.Trim()) .FirstOrDefault())) .ForMember(d => d.c_price_title, opt => opt.MapFrom(src => src.PriceList.Select(s => s.Title).FirstOrDefault())) .ForMember(d => d.m_price_value, opt => opt.MapFrom(src => src.PriceList.Select(s => !String.IsNullOrEmpty(s.Value) ? Decimal.Parse(s.Value.Replace(".", ",")) : 0).FirstOrDefault())) .ForMember(d => d.c_photo, opt => opt.MapFrom(src => src.ImageList .Where(w => w.IsMain || !w.IsMain) .Select(s => s.Name.Trim().Replace(" ", "")) .FirstOrDefault())); cfg.CreateMap <Image, import_product_images>() .ForMember(d => d.f_product, opt => opt.MapFrom(src => src.ProductId)) .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Name)) .ForMember(d => d.b_main, opt => opt.MapFrom(src => src.IsMain)); cfg.CreateMap <Certificate, import_product_certificates>() .ForMember(d => d.f_product, opt => opt.MapFrom(src => src.ProductId)) .ForMember(d => d.c_title, opt => opt.MapFrom(src => src.Name)) .ForMember(d => d.b_hygienic, opt => opt.MapFrom(src => src.IsHygienic)); cfg.CreateMap <CatalogProductLink, import_product_categories>() .ForMember(d => d.f_product, opt => opt.MapFrom(src => src.ProductId)) .ForMember(d => d.f_catalog, opt => opt.MapFrom(src => src.CatalogId)); }); }
public ActionResult Create(Guid id, IEnumerable <HttpPostedFileBase> upload) { string savePath = Settings.UserFiles + Domain + "/sitemap/doc/" + id + "/"; foreach (HttpPostedFileBase doc in upload) { if (doc != null && doc.ContentLength > 0) { int idx = doc.FileName.LastIndexOf('.'); string Title = doc.FileName.Substring(0, idx); string TransTitle = Transliteration.Translit(Title); string FileName = TransTitle + Path.GetExtension(doc.FileName); if (System.IO.File.Exists(Server.MapPath(Path.Combine(savePath, FileName)))) { FileName = TransTitle + "(1)" + Path.GetExtension(doc.FileName); Title = Title + "(1)"; } string FullName = savePath + FileName; if (!Directory.Exists(Server.MapPath(savePath))) { Directory.CreateDirectory(Server.MapPath(savePath)); } //сохраняем оригинал doc.SaveAs(Server.MapPath(Path.Combine(savePath, FileName))); DocumentsModel docModel = new DocumentsModel() { FilePath = FullName, Title = Title, idPage = id }; _cmsRepository.insDocuments(docModel); } } model.List = _cmsRepository.getDocuments(id); return(View(model)); }
/// <summary> /// Сохранение изображений /// </summary> /// <param name="upload"></param> /// <param name="type"></param> /// <returns></returns> private Photo imageWorker(HttpPostedFileBase upload, int type) { // путь для сохранения изображения string savePath = Settings.UserFiles + Domain + Settings.LogoDir; int width = 0; // ширина int height = 0; // высота switch (type) { case 1: width = 80; break; case 2: height = 290; break; } string fileExtension = upload.FileName.Substring(upload.FileName.LastIndexOf(".")).ToLower(); var validExtension = (!string.IsNullOrEmpty(Settings.PicTypes)) ? Settings.PicTypes.Split(',') : "jpg,jpeg,png,gif".Split(','); if (!validExtension.Contains(fileExtension.Replace(".", ""))) { return(null); } string fileName = Transliteration.Translit(upload.FileName.Substring(0, upload.FileName.LastIndexOf("."))); Photo photoNew = new Photo() { Name = fileName + fileExtension, Size = Files.FileAnliz.SizeFromUpload(upload), Url = Files.SaveImageResizeRename(upload, savePath, fileName, width, height) }; return(photoNew); }
public ActionResult Item(Guid id, CategoryViewModel backModel) { ErrorMessage userMessage = new ErrorMessage(); userMessage.title = "Информация"; if (ModelState.IsValid) { backModel.Item.Id = id; string parentParam = Request.Form["Item_ParentId"]; backModel.Item.Parent = !String.IsNullOrEmpty(parentParam) ? Guid.Parse(parentParam) : backModel.Item.Parent; if (String.IsNullOrEmpty(backModel.Item.Alias)) { backModel.Item.Alias = Transliteration.Translit(backModel.Item.Title); } else { backModel.Item.Alias = Transliteration.Translit(backModel.Item.Alias); } if (_cmsRepository.categoryExists(id)) { _cmsRepository.updateCategory(backModel.Item); userMessage.info = "Запись обновлена"; } else { _cmsRepository.createCategory(backModel.Item); userMessage.info = "Запись добавлена"; } string backUrl = backModel.Item.Parent != null ? "item/" + backModel.Item.Parent : string.Empty; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = StartUrl + backUrl, text = "Вернуться в список" }, new ErrorMassegeBtn { url = "/Admin/category/item/" + id, text = "ок" } }; } else { userMessage.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом."; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } model.Item = _cmsRepository.getCategory(id); // хлебные крошки model.BreadCrumbs = _cmsRepository.getCategoryBreadCrumbs(model.Item.Parent); model.ErrorInfo = userMessage; return(View(model)); }
public ActionResult Save(Guid Id, MaterialsViewModel bindData, HttpPostedFileBase upload) { ErrorMessage userMessage = new ErrorMessage(); userMessage.title = "Информация"; if (ModelState.IsValid) { var res = false; var getMaterial = _cmsRepository.getMaterial(Id); // добавление необходимых полей перед сохранением модели bindData.Item.Id = Id; #region Сохранение изображения var width = 0; var height = 0; var defaultPreviewSizes = new string[] { "540", "360" }; // путь для сохранения изображения //Preview image string savePath = Settings.UserFiles + Domain + Settings.MaterialsDir; //+2017_09 if (upload != null && upload.ContentLength > 0) { string fileExtension = upload.FileName.Substring(upload.FileName.LastIndexOf(".")).ToLower(); var validExtension = (!string.IsNullOrEmpty(Settings.PicTypes)) ? Settings.PicTypes.Split(',') : "jpg,jpeg,png,gif".Split(','); if (!validExtension.Contains(fileExtension.Replace(".", ""))) { model.Item = _cmsRepository.getMaterial(Id); model.ErrorInfo = new ErrorMessage() { title = "Ошибка", info = "Вы не можете загружать файлы данного формата", buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false", style = "primary" } } }; return(View("Item", model)); } var sizes = (!string.IsNullOrEmpty(Settings.MaterialPreviewImgSize)) ? Settings.MaterialPreviewImgSize.Split(',') : defaultPreviewSizes; int.TryParse(sizes[0], out width); int.TryParse(sizes[1], out height); bindData.Item.PreviewImage = new Photo() { Name = Id.ToString() + fileExtension, Size = Files.FileAnliz.SizeFromUpload(upload), Url = Files.SaveImageResizeRename(upload, savePath, Id.ToString(), width, height), Source = bindData.Item.PreviewImage.Source }; } #endregion if (String.IsNullOrEmpty(bindData.Item.Alias)) { bindData.Item.Alias = Transliteration.Translit(bindData.Item.Title); } else { bindData.Item.Alias = Transliteration.Translit(bindData.Item.Alias); } //Определяем Insert или Update if (getMaterial != null) { userMessage.info = "Запись обновлена"; res = _cmsRepository.updateCmsMaterial(bindData.Item); } else { userMessage.info = "Запись добавлена"; res = _cmsRepository.insertCmsMaterial(bindData.Item); } //Сообщение пользователю if (res) { string currentUrl = Request.Url.PathAndQuery; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = StartUrl + Request.Url.Query, text = "Вернуться в список" }, new ErrorMassegeBtn { url = currentUrl, text = "ок" } }; } else { userMessage.info = "Произошла ошибка"; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = StartUrl + Request.Url.Query, text = "Вернуться в список" }, new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } } else { userMessage.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом."; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } model.Item = _cmsRepository.getMaterial(Id); if (model.Item != null && model.Item.PreviewImage != null && !string.IsNullOrEmpty(model.Item.PreviewImage.Url)) { var photo = model.Item.PreviewImage; model.Item.PreviewImage = Files.getInfoImage(model.Item.PreviewImage.Url); model.Item.PreviewImage.Source = photo.Source; } model.ErrorInfo = userMessage; return(View("Item", model)); }
public ActionResult Save(Guid Id, SiteSectionViewModel bindData) { ErrorMessage userMessage = new ErrorMessage(); userMessage.title = "Информация"; if (ModelState.IsValid) { var res = false; var getSiteSection = _cmsRepository.getSiteSectionItem(Id); // добавление необходимых полей перед сохранением модели bindData.Item.Id = Id; if (String.IsNullOrEmpty(bindData.Item.Alias)) { bindData.Item.Alias = Transliteration.Translit(bindData.Item.Title); } else { bindData.Item.Alias = Transliteration.Translit(bindData.Item.Alias); } //Определяем Insert или Update if (getSiteSection != null) { res = _cmsRepository.updateSiteSection(bindData.Item); userMessage.info = "Запись обновлена"; } else { res = _cmsRepository.insertSiteSection(bindData.Item); userMessage.info = "Запись добавлена"; } if (!res) { userMessage.info = "Произошла ошибка"; } userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = StartUrl + Request.Url.Query, text = "Вернуться в список" }, new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } else { userMessage.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом."; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } model.Item = _cmsRepository.getSiteSectionItem(Id); model.ErrorInfo = userMessage; return(View("Item", model)); }
public ActionResult Item(Guid id, PageViewModel backModel, string[] Item_MenuGroups, string FaIconList) { ErrorMessage message = new ErrorMessage { Title = "Информация" }; string _parent = backModel.Item.ParentId != null ? $"item/{backModel.Item.ParentId.ToString()}" : ""; string backToListUrl = $"{StartUrl}{_parent}{Request.Url.Query}"; if (ModelState.IsValid) { PageModel parentElement = null; if ((backModel.Item.ParentId != null)) { parentElement = _cmsRepository.GetPage((Guid)backModel.Item.ParentId); } backModel.Item.Path = (parentElement != null)?$"{parentElement.Path}{parentElement.Alias}/":"/"; backModel.Item.Id = id; var ControllerId = Request["Item.Controller.Id"]; if (!String.IsNullOrEmpty(ControllerId) && Guid.TryParse(ControllerId, out Guid result)) { backModel.Item.ControllerPage = result; } if (Item_MenuGroups != null) { backModel.Item.MenuGroups = Item_MenuGroups.Select(s => Guid.Parse(s)).ToArray(); } if (!String.IsNullOrEmpty(FaIconList)) { backModel.Item.FaIcon = FaIconList; } if (String.IsNullOrWhiteSpace(backModel.Item.Alias)) { backModel.Item.Alias = backModel.Item.Name; } backModel.Item.Alias = Transliteration.Translit(backModel.Item.Alias); // backModel.Item.Alias = SpotAlias(backModel.Item.Alias, backModel.Item.Path, id); if (_cmsRepository.CheckPageExists(id)) { _cmsRepository.UpdatePage(backModel.Item); message.Info = "Запись обновлена"; } else { _cmsRepository.InsertPage(backModel.Item); message.Info = "Запись добавлена"; } message.Buttons = new ErrorMessageBtnModel[] { new ErrorMessageBtnModel { Url = backToListUrl, Text = "вернуться в список" }, new ErrorMessageBtnModel { Url = $"{StartUrl}item/{id}", Text = "ок", Action = "false" } }; } else { message.Info = "Ошибка в заполнении формы. Поля в которых допущены ошибки - помечены цветом"; message.Buttons = new ErrorMessageBtnModel[] { new ErrorMessageBtnModel { Url = $"{StartUrl}item/{id}", Text = "ок", Action = "false" } }; } model.Item = _cmsRepository.GetPage(id); GetBreadCrumbs(id); model.ErrorInfo = message; return(View("item", model)); }
public ActionResult Index(SitesViewModel backModel, HttpPostedFileBase upload, HttpPostedFileBase uploadBack) { ErrorMessage userMassege = new ErrorMessage { title = "Информация" }; if (ModelState.IsValid) { double MapX = 0; double MapY = 0; if (backModel.Item.CoordX != null) { MapX = (double)backModel.Item.CoordX; } if (backModel.Item.CoordY != null) { MapY = (double)backModel.Item.CoordY; } ViewBag.Xcoord = MapX; ViewBag.Ycoord = MapY; if (backModel.Item.Adress != String.Empty && (MapX == 0 || MapY == 0)) { string url = "http://geocode-maps.yandex.ru/1.x/?format=json&results=1&geocode=" + backModel.Item.Adress; string html = string.Empty; // Отправляем GET запрос и получаем в ответ JSON с данным об адресе HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream()); html = myStreamReader.ReadToEnd(); string coord = String.Empty; Regex ReCoord = new Regex("(?<=\"Point\":{\"pos\":\")(.*)(?=\"})", RegexOptions.IgnoreCase); coord = Convert.ToString(ReCoord.Match(html).Groups[1].Value); coord = coord.Replace(" ", ";"); string[] ArrCoord = coord.Split(';'); foreach (string qwerty in ArrCoord) { MapX = double.Parse(ArrCoord[1].Replace(".", ",")); MapY = double.Parse(ArrCoord[0].Replace(".", ",")); } backModel.Item.CoordX = MapX; backModel.Item.CoordY = MapY; } #region Сохранение изображений if (upload != null && upload.ContentLength > 0) { var photo = imageWorker(upload, 1); if (photo == null) { return(View("Item", model)); } backModel.Item.Logo = photo; } #region Изображени под слайдером if (uploadBack != null && uploadBack.ContentLength > 0) { string SavePath = Settings.UserFiles + Domain + "/logo/"; int idx = uploadBack.FileName.LastIndexOf('.'); string Title = uploadBack.FileName.Substring(0, idx); string TransTitle = Transliteration.Translit(Title); string FileName = TransTitle + Path.GetExtension(uploadBack.FileName); string FullName = SavePath + FileName; if (!Directory.Exists(Server.MapPath(SavePath))) { Directory.CreateDirectory(Server.MapPath(SavePath)); } uploadBack.SaveAs(Server.MapPath(Path.Combine(SavePath, FileName))); backModel.Item.BackGroundImg = new Photo { Url = FullName }; } #endregion #endregion _cmsRepository.updateSiteInfo(backModel.Item); userMassege.info = "Запись обновлена"; userMassege.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "/Admin/sitesettings", text = "ок" } }; } else { userMassege.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом."; userMassege.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } model.ErrorInfo = userMassege; model.Item = _cmsRepository.getSite(); return(View(model)); }
public ActionResult Item(Guid id, SiteMapViewModel back_model, HttpPostedFileBase upload) { ErrorMessage userMessage = new ErrorMessage { title = "Информация" }; #region Данные необходимые для сохранения back_model.Item.Id = id; if (string.IsNullOrEmpty(Request.Form["Item_ParentId"])) { back_model.Item.ParentId = null; } else { back_model.Item.ParentId = back_model.Item.ParentId != null ? back_model.Item.ParentId : Guid.Parse(Request.Form["Item_ParentId"]); // родительский id } var p = back_model.Item.ParentId != null?_cmsRepository.getSiteMapItem((Guid)back_model.Item.ParentId) : null; back_model.Item.Path = p == null ? "/" : p.Path + p.Alias + "/"; back_model.Item.Site = Domain; if (String.IsNullOrEmpty(back_model.Item.Alias)) { back_model.Item.Alias = Transliteration.Translit(back_model.Item.Title); } else { back_model.Item.Alias = Transliteration.Translit(back_model.Item.Alias); } if (_cmsRepository.existSiteMap(back_model.Item.Path, back_model.Item.Alias, back_model.Item.Id))// && back_model.Item.OldId!=null { model.ErrorInfo = new ErrorMessage() { title = "Ошибка", info = "Такой алиас на данном уровне уже существует, введите иное значение в поле Алиас", buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false", style = "primary" } } }; model.Item = back_model.Item; // хлебные крошки model.BreadCrumbs = _cmsRepository.getSiteMapBreadCrumbs(back_model.Item.ParentId); model.Item.ParentId = back_model.Item.ParentId; var _mg = new MultiSelectList(model.MenuTypes, "value", "text", model.Item?.MenuGroups); ViewBag.GroupMenu = _mg; return(View("Item", model)); } // хлебные крошки model.BreadCrumbs = _cmsRepository.getSiteMapBreadCrumbs(back_model.Item.ParentId); // список дочерних элементов model.Childrens = _cmsRepository.getSiteMapChildrens(id); #endregion //определяем занятость входного url if (!_cmsRepository.ckeckSiteMapAlias(back_model.Item.Alias, back_model.Item.ParentId.ToString(), id)) { if (ModelState.IsValid) { #region Сохранение изображение // путь для сохранения изображения string savePath = Settings.UserFiles + Domain + Settings.SiteMapDir; int width = 264; int height = 70; if (upload != null && upload.ContentLength > 0) { string fileExtension = upload.FileName.Substring(upload.FileName.LastIndexOf(".")).ToLower(); var validExtension = (!string.IsNullOrEmpty(Settings.PicTypes)) ? Settings.PicTypes.Split(',') : "jpg,jpeg,png,gif".Split(','); if (!validExtension.Contains(fileExtension.Replace(".", ""))) { model.Item = _cmsRepository.getSiteMapItem(id); model.ErrorInfo = new ErrorMessage() { title = "Ошибка", info = "Вы не можете загружать файлы данного формата", buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false", style = "primary" } } }; return(View("Item", model)); } Photo photoNew = new Photo() { Name = id.ToString() + fileExtension, Size = Files.FileAnliz.SizeFromUpload(upload), Url = Files.SaveImageResizeRename(upload, savePath, id.ToString(), width, height) }; back_model.Item.Photo = photoNew; } #endregion if (_cmsRepository.checkSiteMap(id)) { //Если запись заблокирована от редактирования некоторых полей var siteMapItem = _cmsRepository.getSiteMapItem(id); if (siteMapItem.Blocked && !model.Account.Group.ToLower().Equals("developer") && !model.Account.Group.ToLower().Equals("administrator")) { siteMapItem.Disabled = back_model.Item.Disabled; siteMapItem.DisabledMenu = back_model.Item.DisabledMenu; siteMapItem.Keyw = back_model.Item.Keyw; siteMapItem.Desc = back_model.Item.Desc; siteMapItem.Text = back_model.Item.Text; siteMapItem.Url = back_model.Item.Url; siteMapItem.ParentId = back_model.Item.ParentId; siteMapItem.MenuGroups = back_model.Item.MenuGroups; siteMapItem.Path = back_model.Item.Path; _cmsRepository.updateSiteMapItem(id, siteMapItem); } else { _cmsRepository.updateSiteMapItem(id, back_model.Item); //, AccountInfo.id, RequestUserInfo.IP } userMessage.info = "Запись обновлена"; } else { _cmsRepository.createSiteMapItem(id, back_model.Item); //, AccountInfo.id, RequestUserInfo.IP userMessage.info = "Запись добавлена"; } string backUrl = back_model.Item.ParentId != null ? "item/" + back_model.Item.ParentId : string.Empty; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = StartUrl + backUrl, text = "Вернуться в список" }, new ErrorMassegeBtn { url = "/Admin/sitemap/item/" + id, text = "ок" } }; } else { userMessage.info = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом."; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } } else { userMessage.info = "Элемент с таким алиасом на этом уровне уже существует"; userMessage.buttons = new ErrorMassegeBtn[] { new ErrorMassegeBtn { url = "#", text = "ок", action = "false" } }; } model.Item = _cmsRepository.getSiteMapItem(id); var mg = new MultiSelectList(model.MenuTypes, "value", "text", model.Item?.MenuGroups); ViewBag.GroupMenu = mg; var aviable = (model.MenuTypes != null) ? (model.MenuTypes.Where(t => t.available).Any()) ? model.MenuTypes.Where(t => t.available).ToArray() : new Catalog_list[] { } : new Catalog_list[] { }; var mgAviable = new MultiSelectList(aviable, "value", "text", model.Item != null ? model.Item.MenuGroups : null); ViewBag.GroupMenuAviable = mgAviable; model.Item.MenuGroups = null; model.ErrorInfo = userMessage; return(View(model)); }
static void Main(string[] args) { //args = new string[] { @"C:\Users\htc\Desktop\дом", @"C:\Users\htc\Desktop\test", "resizefolder", "W3siZm9sZGVyX25hbWUiOiJtZWRpdW0iLCJ3aWR0aCI6NTAwLCJoZWlnaHQiOjMwMCwiY3JvcGVkIjoiY292ZXIifV0=" }; OpenCL.IsEnabled = false; string inFileOrFolder = PathToUnix(args[0]); string outFileOrFolder = PathToUnix(args[1]); string cmd = args[2].ToLower().Trim(); #region resizefolder if (cmd == "resizefolder") { foreach (var md in JsonConvert.DeserializeObject <List <ResizeFolderModel> >(Base64.Decode(args[3]))) { Parallel.ForEach(Directory.GetFiles(inFileOrFolder, "*.*", SearchOption.AllDirectories), new ParallelOptions() { MaxDegreeOfParallelism = 8 }, inFile => { string outFolder = PathToUnix(Path.GetDirectoryName(PathToUnix(inFile).Replace(inFileOrFolder, $"{outFileOrFolder}/{md.folder_name}"))); Directory.CreateDirectory(outFolder); string outFile = $"{outFolder}/{Transliteration.Translit(Path.GetFileName(inFile))}"; using (MagickImage image = new MagickImage(inFile)) { #region Локальная функция - "GetModelOfExistingFile" ResizeFolderModel GetModelOfExistingFile(string path) { using (MagickImage img = new MagickImage(path)) { return(new ResizeFolderModel() { width = img.Width, height = img.Height }); } } #endregion if (md.croped == "cover") { // Привью нету // Размер привью не совпадает по высоте или ширине if (!File.Exists(outFile) || (GetModelOfExistingFile(outFile) is ResizeFolderModel existSmallImg && (md.width != existSmallImg.width || md.height != existSmallImg.height))) { // Размер изображения оригинал float image_w = image.Width; float image_h = image.Height; // Какой нужен float resize_w = md.width; float resize_h = md.height; // float ratio_w = resize_w / image_w; float ratio_h = resize_h / image_h; float ratio = Math.Max(ratio_w, ratio_h); // Новый размер изображения int new_width = (int)Math.Ceiling(image_w * ratio); int new_height = (int)Math.Ceiling(image_h * ratio); // Куда двигать, да бы было по центру int offset_left = (int)Math.Ceiling((new_width - resize_w) / 2); int offset_top = (int)Math.Ceiling((new_height - resize_h) / 2); // Сохраняем изображение image.Resize(new_width, new_height); image.Crop(offset_left, offset_top, (int)resize_w, (int)resize_h); image.Write(outFile); } } else { // Изображение нету // Размер изображения не совпадает по высоте и ширине if (!File.Exists(outFile) || (GetModelOfExistingFile(outFile) is ResizeFolderModel existImg && (md.width != existImg.width && md.height != existImg.height))) { image.Resize(md.width, md.height); image.Write(outFile); } } }