Crop Image - Пример вырезания изображения с изменением размера и использованием библиотеки SixLabors.ImageSharp на .NET Core

Простой пример класса с методом для получения квадратного превью изображения в .NET Core, при помощи библиотеки SixLabors.ImageSharp.

Пример:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.PixelFormats;
using System;
using SixLabors.ImageSharp.Formats.Jpeg;

namespace TransformImage.Methods
{
    public static class ImgActions
    {
        public static void CropImage(string path, string path_in, int size)
        {
            try
            {
                // Открывает файл, определяет тип файла и декодирует
                using (Image<Rgba32> image = Image.Load(path)) 
                {
                    // Теперь изображение находится в независимой от формата файла структуре в памяти как серия Rgba32 пикселей
                    
                    int line = image.Height < image.Width ? image.Height : image.Width;
                    
                    // Вырезаем часть изображения (квадрат по минимальной стороне)
                    
                    image.Mutate(tx => tx.Crop(line, line));
                    
                    // Изменяем размер изображения
                    
                    image.Mutate(ctx => ctx.Resize(size, size)); 

                    // Записываем в заданном формате с указанным качеством, без метаданных для экономии места
                    
                    image.Save(path_in,new JpegEncoder{Quality = 100, IgnoreMetadata = true}); 
                }
            }
            catch (Exception ex)
            {
                Program.logger.Error(ex, ex.Message);
            }
        }

    }
}


Читать дальше →

Пример настройки Web приложения .NET Core в Ubuntu под Apache

Сейчас компания Microsoft всё больше сил уделяет .NET Core, который является по настоящему кроссплатформенным и универсальным. Поэтому не лишним будет зафиксировать процесс настройки доступа к сайту написанному на .NET Core в Ubuntu Linux с использованием Apache.

Итак приступим.

Если у вас не установлен dot-net на Ubuntu, то предварительно устанавливаем его:
Подключаем репозиторий (В нашем случае для версии Ubuntu 16.04, для разных версий можно посмотреть здесь)
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

Устанавливаем компоненты
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2


Теперь берем свой готовый сайт на .NET Core (или делаем простенький пример как здесь), и размещаем его в папке например:
var/net/sample


Читать дальше →

Пример синхронного AJAX запроса на JQuery и .NET Core

В данной публикации приведен пример того как выполнить асинхронный запрос к серверу без перезагрузки текущей страницы, с помощью JQuery на .NET Core.

Итак приступим.

Для начала нам потребуется создать проект Web сайта на .NET Core, например как здесь: https://kbss.ru/blog/netcore/271.html

Теперь модифицировать или создать новый контроллер Home с двумя методами:
Index — отображает страницу
GetInfo — обрабатывает запрос и возвращает ответ в формате JSON

Читать дальше →

Авторизация в приложении через Вконтакте VK на C#

Данная публикация написана как простая инструкция для себя, на память, чтобы не забыть.

Предложенный вариант использовался для авторизации через токен VK в серверном приложении.

Для начала создадим метод отправки HTTP запроса и получения ответа от сервера:

/// <summary>
        /// Отправляем запрос на получение 
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        private static string GetRequest(string host, string req)
        {
            string str = "";

            var Vk = new HttpClient();
            Vk.DefaultRequestHeaders.Add("Connection", "close");

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(req);
            request.UseDefaultCredentials = true;
            request.PreAuthenticate = true;
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Method = "GET";
            request.Host = host;
            request.UserAgent = "RM";
            request.ContentType = "application/x-www-form-urlencoded";
            request.KeepAlive = false;

            using (HttpWebResponse responsevk = (HttpWebResponse)request.GetResponse())
            using (var stream = responsevk.GetResponseStream())
            using (var streamReader = new StreamReader(stream, Encoding.UTF8))
            {
                str = streamReader.ReadToEnd();
            }
            return str;
        }


Читать дальше →

Cors Policy в .Net Core Web Api - добавляем поддержку

Для добавления поддержки CorsPolicy в .NET Core приложении открываем файл Startup.cs и меняем методы ConfigureServices и Configure, следующим образом:

ConfigureServices
public void ConfigureServices(IServiceCollection services)
        {
            // Добавляем CorsPolicy
            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                    builder => builder.AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials());
            });
            
            
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }


Читать дальше →

Установка русской кодировки на уже созданную базу данных (смена COLLATION)

Полезный пример изменения кодировки (COLLATION) на уже созданной базе данных.
В данном примере устанавливается русская кодировка: Cyrillic_General_CI_AS

USE master;
GO

-- Переводим БД в single-user mode
ALTER DATABASE [имя_базы_данных]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

-- Меняем кодировку COLLATION
ALTER DATABASE [имя_базы_данных]
COLLATE Cyrillic_General_CI_AS ;
GO

-- Переводим БД обратно в multi-user mode
ALTER DATABASE [имя_базы_данных]
SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO  
 
--Проверяем настройки COLLATION.
SELECT name, collation_name
FROM sys.databases
WHERE name = 'имя_базы_данных';
GO


Читать дальше →

Немного размышлений по поводу .NET Core

.NET Core появился уже достаточно давно, претерпел ряд изменений и даже обзавелся второй версией.

С появлением .NET Core в архитектуре .NET появилось понятие .NET Standard — представляет спецификацию интерфейсов, которые должны реализовывать все версии .NET, что дает возможность разработчикам создавать переносимые библиотеки, которые возможно использовать в разных реализациях .NET благодаря общему набору интерфейсов.

.NET Standard

Разные реализации .NET реализуют определенные версии .NET Standard.

Читать дальше →

Bootstrap DateTimePicker - пример выбора только месяца из выпадающего меню.

В данном примере будет продемонстрировано, как сделать выпадающее меню выбора только месяца, без числа, с использованием bootstrap-datetimepicker.

Итак, для реализации задуманного нам понадобятся компоненты:
bootstrap — сам bootstrap
jquery — Библиотека JQuery
moment — Библиотека для работы со временем, в нашем примере будет использована moment-with-locales
bootstrap-datetimepicker — Библиотека выпадающего меню выбора даты

В дополнение, в примере будут использованы библиотеки respond.js и html5shiv.min.js для того, чтобы наша затея корректно отображалась и в IE.


Итак приступим...

OpenXML - Пример создания Excel файла на C#

В данной публикации приведен пример генерации Excel файла при помощи библиотеки OpenXML.
Отличие этой библиотеки OpenXML от Microsoft.Office.Interop.Excel в быстродействии которое на порядок выше.

Для работы с Excel документами необходимо установить расширение DocumentFormat.OpenXML из Nuget, оно позволит создавать Excel документы для версии Microsoft Office не ниже 2010.

Так-же для работы нам понадобится добавить в проект стандартную библиотеку WindowsBase, просто через Add References, без нее приложение не скомпилируется.

Ниже я приведу пример того, с чем работал сам, первоначальный вариант примера был найден где-то на просторах англоязычного интернета, переработан и теперь выглядит так — как выглядит, с моими комментариями и правками.

Пример демонстрирует формирование маленького Excel файла, который содержит тестовый текст в различных ячейках с применением разных стилей, как на изображении ниже:

OpenXML - C# - Excel

Исходный код примера консольного приложения формирующего Excel на изображении выше:

Читать дальше →

C# .NET - Получение информации по пользователю в домене

В данной публикации приведен пример получения информации по пользователю в домене AD с использованием C#.

Для того чтобы всё заработало необходимо подключить библиотеку:
using System.DirectoryServices.AccountManagement;


Затем можно получать параметры по пользователю.

            PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

            var loginName = HttpContext.User.Identity.Name.ToString();

            UserPrincipal user = UserPrincipal.FindByIdentity(ctx, loginName);

            if (user != null)
            {
                // Получаем SID пользователя
                var userSid = user.Sid;

                // Получаем EMail пользователя
                var userEmail = user.EmailAddress;

                // Получаем Количество неудачных попыток входа пользователя
                var userBadLogons = user.BadLogonCount;

                // ФИО пользователя ( отображаемое имя)
                var userName = user.DisplayName;

                // Системное имя (по сути логин)
                var userSamAccountName = user.SamAccountName;

                var userFullName = String.Format("{0} {1} {2}", userName, userSamAccountName, userBadLogons);
                ViewBag.Message = userFullName;
            }


Читать дальше →