Работа с картинками (.net, c#)

  1. Загружаем картинку на сервер
    [HttpPost]
    public void UploadImage(HttpPostedFileBase file)
    {
        if (file == null)
            throw new Exception("Не указан файл.");
    
        if (!new string[] { "image/jpeg", "image/pjpeg", "image/png", "image/gif", "image/bmp" }
    .Any(x => x == file.ContentType.ToLower()))
            throw new Exception("Файл не является изображением.");
    
        System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream);
        image.Save("d:/Temp/Image.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
    
    }
    
  2. Сжимаем картинки
    public void ResizeImage(int size, string filePath, string saveFilePath)
    {
        //variables for image dimension/scale
        double newHeight = 0;
        double newWidth = 0;
        double scale = 0;
    
        //create new image object
        Bitmap curImage = new Bitmap(filePath);
    
        //Determine image scaling
        if (curImage.Height > curImage.Width)
        {
            scale = Convert.ToSingle(size) / curImage.Height;
        }
        else
        {
            scale = Convert.ToSingle(size) / curImage.Width;
        }
    
        //New image dimension
        newHeight = Math.Floor(Convert.ToSingle(curImage.Height) * scale);
        newWidth = Math.Floor(Convert.ToSingle(curImage.Width) * scale);
    
        //Create new object image
        Bitmap newImage = new Bitmap(curImage, Convert.ToInt32(newWidth), Convert.ToInt32(newHeight));
        Graphics imgDest = Graphics.FromImage(newImage);
        imgDest.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        imgDest.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        imgDest.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
        imgDest.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        ImageCodecInfo[] info = ImageCodecInfo.GetImageEncoders();
        EncoderParameters param = new EncoderParameters(1);
        param.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
    
        //Draw the object image
        imgDest.DrawImage(curImage, 0, 0, newImage.Width, newImage.Height);
    
        //Save image file
        newImage.Save(saveFilePath, info[1], param);
    
        //Dispose the image objects
        curImage.Dispose();
        newImage.Dispose();
        imgDest.Dispose();
    }
    
  3. Загружаем картинку на сервер по url
    public void UploadImageByUrl(string url)
    {
        WebRequest request = WebRequest.Create(url);
        using (WebResponse response = request.GetResponse())
        using (Stream stream = response.GetResponseStream())
        {
            if (!new string[] { "image/jpeg", "image/jpeg", "image/png", "image/gif", "image/bmp" }.
    Any(x => x == response.ContentType.ToLower()))
                throw new Exception("Файл не является изображением.");
            System.Drawing.Image image = System.Drawing.Image.FromStream(stream);
            image.Save("d:/Temp/Image.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    
  4. Загружаем картинку на сервер по ftp
    public void UploadImageByFtp(string ftpUrl)
    {
        string fileExtSrc = Path.GetExtension(ftpUrl);
        if (!new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" }.Any(x => x == fileExtSrc.ToLower()))
            throw new Exception("Файл не является изображением.");
    
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
        request.Method = WebRequestMethods.Ftp.DownloadFile;
        request.Credentials = new NetworkCredential("Admin", "123456");
        using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
        using (Stream stream = response.GetResponseStream())
        {
            System.Drawing.Image image = System.Drawing.Image.FromStream(stream);
            image.Save("d:/Temp/Image.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    
  5. Делаем копию картинки в памяти
    byte[] imageBytes = System.IO.File.ReadAllBytes(imagePath);
    using (MemoryStream ms = new MemoryStream(imageBytes))
    {
        using (System.Drawing.Image image = System.Drawing.Image.FromStream(ms))
        {
            // do stuff
        }
    }
    
По теме:
Выполняем get запрос по расписанию c#

Напишем простенькую программу, которая будет выполнять get запрос по истечению определенного интервала времени. class Program { private static Timer _timer; Read more

Выполняем действие по расписанию (asp.net, c#)

Раньше я писал программку, которая выполняла get запрос по расписанию, но так же можно написать обычный HttpModule, который будет делать Read more

Выбираем технологии и инструменты для разработки веб приложений

1 Выбор и настройка инструментов для разработки фронтенда (только самые важные): 1.1 Twitter bootstrap — фреймворк позволяет писать качественную верстку Read more

Делаем водяной знак на картинке (c#, .net)

Нанесем несколько раз картинку watermark на другую картинку. public void DrawWatermark(string watermarkImagePath, System.Drawing.Image image) { using (System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(watermarkImagePath)) Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *