Как с помощью C# обрезать картинку?

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
перед result.Save(@"C:\2.jpg")
 

sekoan

Client
Регистрация
04.01.2015
Сообщения
219
Благодарностей
92
Баллы
28
туда я уже вставлял, таже ошибка
 

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113

sekoan

Client
Регистрация
04.01.2015
Сообщения
219
Благодарностей
92
Баллы
28
поставил, что то тоже самое
 

Вложения

  • 257,1 КБ Просмотры: 42

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
так попробуй
 

Вложения

Dmitrybyapple

Client
Регистрация
22.02.2015
Сообщения
62
Благодарностей
42
Баллы
18

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
вызовите result.Dispose(); в конце
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
вызовите result.Dispose(); в конце
Все работает, но не работает в том случае, если изобажение маленькое а координаты большие.. пишет там что то invocation.
У меня задача убрать с фотографии 20px с низу. т.е обрезать.
Как я понимаю мне нужно получить сначала координаты реальной картинки.
Потом отнять от них 20px снизу.
Как такое реализовать ? может кто посдскажет как допилить этот код ?

Код:
var img = new Bitmap(Image.FromFile(@"C:\1.jpg"));
int x1 = 10;
int x2 = 100;
int y1 = 1;
int y2 = 100;
int width = x2 - x1 + 1;
int height = y2 - y1 + 1;
var result = new Bitmap(width, height);
for (int i = x1; i <= x2; i++)
     for (int j = y1; j <= y2; j++)
          result.SetPixel(i - x1, j - y1, img.GetPixel(i, j));
   
result.Save(@"C:\2.jpg");
   
    result.Dispose();
 

nomarketing

Client
Регистрация
01.11.2013
Сообщения
911
Благодарностей
178
Баллы
43
Как получить размеры картинки в С. Может кому пригодится. Если нет изображения или оно пустое возвращает fail.
Код:
//string FileName = @"C:\1.jpg";
string FileName = project.Variables["path_to_img"].Value;
System.Drawing.Image objImage = System.Drawing.Image.FromFile(FileName);
var ImageWidth = objImage.Width.ToString();
var ImageHeight = objImage.Height.ToString();
return ImageWidth;
//return ImageHeight;
Не пойму как обрезать картинку, т.е функция обрезания работает, но если картинка меньше установленных параметров то.. нет.
Я не могу понять логику получение размеров + обрезания картинки по полученным данным (к примеру убераем 20 пикселей с низу)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113

qzen4i

Client
Регистрация
01.05.2014
Сообщения
1 408
Благодарностей
314
Баллы
83
а как можно обрезать картинку, на 9 частей?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113

maloibtc

Client
Регистрация
08.04.2016
Сообщения
365
Благодарностей
91
Баллы
28

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

maloibtc

Client
Регистрация
08.04.2016
Сообщения
365
Благодарностей
91
Баллы
28

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
  • Спасибо
Реакции: maloibtc

maloibtc

Client
Регистрация
08.04.2016
Сообщения
365
Благодарностей
91
Баллы
28

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
  • Спасибо
Реакции: maloibtc

maloibtc

Client
Регистрация
08.04.2016
Сообщения
365
Благодарностей
91
Баллы
28
Режет но как сохранить то что обрезало?
Использую этот вариант
Код:
int size = 50; // Сколько обрезать.
            Bitmap bmp = new Bitmap(@"C:\1.png"); // Загружаемый файл.
            Bitmap bm = new Bitmap(bmp.Width - size, bmp.Height);
            for (int i = 0; i < bmp.Width - size; i++)
            {
                for (int j = 0; j < bmp.Height; j++)
                    bm.SetPixel(i, j, bmp.GetPixel(i, j));
            }
            bm.Save(@"C:\resul.png"); // Сохраняемый файл.
            bmp.Dispose();
            bm.Dispose();
То что обрезает непойму куда девается,и как таким макаром вырезать все 6 картинок и сохранить
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 125
Баллы
113
как таким макаром вырезать все 6 картинок и сохранить
modules.png
C#:
int w = 50;
Bitmap img = new Bitmap(project.Directory + @"\img\modules.png");
int count = img.Width / w;
Bitmap result = new Bitmap(w, img.Height);

for (int k = 0; k < count; k++) {
    for (int j = 0; j < img.Height; j++)
        for (int i = 0; i < w; i++)
            result.SetPixel(i, j, img.GetPixel((w * k) + i, j));
    result.Save(project.Directory + @"\img\" + Convert.ToString(k + 1) + ".png");
}

img.Dispose();
result.Dispose();
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
Всем привет уважаемый вопрос скажите как вырезать по координатам некоторый части картинки (не обрезать а имена вырезать чтобы картинка осталась целое но с не большыми изминениями) Вот пример:
upload_2017-7-17_15-25-21.png

Оригинал капчи:
upload_2017-7-17_15-24-10.png
 

Вложения

Dufus111

Client
Регистрация
31.01.2016
Сообщения
51
Благодарностей
9
Баллы
8
Вообще просто:
JavaScript:
var img = new Bitmap(Image.FromFile(@"C:\1.jpg"));

int x1 = 10;
int x2 = 50;
int y1 = 10;
int y2 = 50;

int width = x2 - x1 + 1;
int height = y2 - y1 + 1;

var result = new Bitmap(width, height);

for (int i = x1; i <= x2; i++)
     for (int j = y1; j <= y2; j++)
          result.SetPixel(i - x1, j - y1, img.GetPixel(i, j));

result.Save(@"C:\2.jpg")
где (x1, y1) - координаты левой верхней точки, а (x2, y2) - координаты нижней правой точки прямоугольника старого изображения который должен стать новой картинкой.
В коде заданы вот так:
JavaScript:
int x1 = 10;
int x2 = 50;
int y1 = 10;
int y2 = 50;
Подскажите пожалуйста как вставить вместо C:\1.jpg var img = new Bitmap(Image.FromFile(@"C:\1.jpg")); свою переменную project.Variables["CSharp"].Value
пробовал так, var img = new Bitmap(Image.FromFile(@"'"+project.Variables["CSharp"].Value+"'")); ругается что путь не верен
и ещё вместо значений
int x1 = 10;
int x2 = 50;
int y1 = 10;
int y2 = 50;
то же свои перемнные они у меня уже есть внутри проекта, но их надо как то преобразовать в int

int x1 = project.Variables["x1"].Value
int x2 = project.Variables["x2"].Value
int y1 = project.Variables["y1"].Value
int y2 = project.Variables["y2"].Value

Я вообще нуб в C# помогите плиз
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
819
Благодарностей
231
Баллы
43
Подскажите пожалуйста как вставить вместо C:\1.jpg var img = new Bitmap(Image.FromFile(@"C:\1.jpg")); свою переменную project.Variables["CSharp"].Value
пробовал так, var img = new Bitmap(Image.FromFile(@"'"+project.Variables["CSharp"].Value+"'")); ругается что путь не верен
и ещё вместо значений
int x1 = 10;
int x2 = 50;
int y1 = 10;
int y2 = 50;
то же свои перемнные они у меня уже есть внутри проекта, но их надо как то преобразовать в int

int x1 = project.Variables["x1"].Value
int x2 = project.Variables["x2"].Value
int y1 = project.Variables["y1"].Value
int y2 = project.Variables["y2"].Value

Я вообще нуб в C# помогите плиз
Вот так попробуй
var img = new Bitmap(Image.FromFile(project.Variables["CSharp"].Value));
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)