Помощь по обрезке фото за $

nic1984p

Пользователь
Регистрация
03.03.2014
Сообщения
99
Благодарностей
4
Баллы
8
НУЖНА ПОМОЩЬ ПО НАПИСАНИЮ КОДА ОБРЕЗКИ ФОТОГРАФИЙ для зеннопостер
Путь к фотографиям берется из списка в виде переменной например {-Variable.FOTO-}. Формат *.jpg
Нужно брать фотографию и обрезать края случайным образом: например берется фотография и обрезается правый (или левый или нижний или верхний край) от 1го до 30(например) пикселей (еще лучше если я сам задаю до скольки пикселей обрезать - до 30ти или например до 20ти), и сохранить фотографию (обрезанную) в другую папку, главное чтобы исходные фотографии не пострадали, имя сохраненных фотографий может быть любым, но лучше чтоб имена не повторялись, максимальное количество фотографий при обрезке - 20шт (исходя из этого задаем номера для сохраненных фоток)!!
Подскажите код (переменная с фото(полный путь до фото) у меня {-Variable.FOTO-}
Сохранять об резаные файлы можно на C:\Фото
МОГУ ОТБЛАГОДАРИТЬ $ КИВИ
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 264
Баллы
113
в личку
 

iDnx

Client
Регистрация
06.06.2013
Сообщения
129
Благодарностей
104
Баллы
43
Если будет не жалко, выложите для общего развития ;-)
 

nic1984p

Пользователь
Регистрация
03.03.2014
Сообщения
99
Благодарностей
4
Баллы
8
Если будет не жалко, выложите для общего развития ;-)
Выложу наверное.. Ни кто ни че не предлагает, а там весь скрипт на 15 строчек поместится.... Вопрос актуален
 

iDnx

Client
Регистрация
06.06.2013
Сообщения
129
Благодарностей
104
Баллы
43
Код:
var img = new Bitmap(Image.FromFile(@project.Variables["FOTO"].Value));

int heightStart = 0;
int heightEnd = img.Height;
int widthStart = 0;
int widthEnd = img.Width;

var r = new Random();
int random = r.Next(1,30);

switch (Macros.TextProcessing.Spintax("{first|second|third|fourth}")) {
    case "first":
        heightStart += random;
        break;
    case "second":
        heightEnd -= random;
        break;
    case "third":
        widthStart += random;
        break;
    case "fourth":
        widthEnd -= random;
        break;
}

return string.Format("{1}:{2}:{3}:{4}", heightStart, heightEnd, widthStart, widthEnd);
Вот такое начало, но почему-то не пойму в чем проблема.
 
  • Спасибо
Реакции: nic1984p

nic1984p

Пользователь
Регистрация
03.03.2014
Сообщения
99
Благодарностей
4
Баллы
8
Код:
var img = new Bitmap(Image.FromFile(@project.Variables["FOTO"].Value));

int heightStart = 0;
int heightEnd = img.Height;
int widthStart = 0;
int widthEnd = img.Width;

var r = new Random();
int random = r.Next(1,30);

switch (Macros.TextProcessing.Spintax("{first|second|third|fourth}")) {
    case "first":
        heightStart += random;
        break;
    case "second":
        heightEnd -= random;
        break;
    case "third":
        widthStart += random;
        break;
    case "fourth":
        widthEnd -= random;
        break;
}

return string.Format("{1}:{2}:{3}:{4}", heightStart, heightEnd, widthStart, widthEnd);
Вот такое начало, но почему-то не пойму в чем проблема.
МОЖЕТ КТО НА САЙТЕ ПОДСКАЖЕТ КАК ЗАКОНЧИТЬ???
 

iDnx

Client
Регистрация
06.06.2013
Сообщения
129
Благодарностей
104
Баллы
43
Вроде работает.
Код:
var img = new Bitmap(Image.FromFile(@project.Variables["FOTO"].Value));

string fileName = Macros.TextProcessing.RandomText(20, "", "");

// 20 - количество обрезаний одной фотографии
for (int n = 1; n <= 20; n++) {
    int heightStart = 1;
    int heightEnd = img.Height;
    int widthStart = 1;
    int widthEnd = img.Width;

    var r = new Random();
    int random = r.Next(1,30);

    switch (Macros.TextProcessing.Spintax("{first|second|third|fourth}")) {
        case "first":
            heightStart += random;
            break;
        case "second":
            heightEnd -= random;
            break;
        case "third":
            widthStart += random;
            break;
        case "fourth":
            widthEnd -= random;
            break;
    }

    var result = new Bitmap(widthEnd, heightEnd);
    
    for (int i = widthStart; i < widthEnd; i++)
        for (int j = heightStart; j < heightEnd; j++)
            result.SetPixel(i, j, img.GetPixel(i, j));

    string path = string.Format("C:\\Фото\\{0}_{1}.jpg", fileName, n);
    result.Save(path);
}
Если в логах будет:
Код:
Выполнение действия CSharp OwnCode В GDI+ возникла ошибка общего вида.
Нужно создать папку "Фото" на диску C.
 
  • Спасибо
Реакции: bedl0

iDnx

Client
Регистрация
06.06.2013
Сообщения
129
Благодарностей
104
Баллы
43
Так будет лучше :-)
Код:
var img = new Bitmap(Image.FromFile(@project.Variables["FOTO"].Value));

string fileName = Macros.TextProcessing.RandomText(20, "", "");

// 20 - количество обрезаний одной фотографии
for (int n = 1; n <= 20; n++) {
    int heightStart = 0;
    int heightEnd = img.Height;
    int widthStart = 0;
    int widthEnd = img.Width;

    var r = new Random();
    int random = r.Next(1,30);

    switch (Macros.TextProcessing.Spintax("{first|second|third|fourth}")) {
        case "first":
            heightStart += random;
            break;
        case "second":
            heightEnd -= random;
            break;
        case "third":
            widthStart += random;
            break;
        case "fourth":
            widthEnd -= random;
            break;
    }

    var result = new Bitmap(widthEnd - widthStart, heightEnd - heightStart);
    
    for (int i = widthStart; i < widthEnd - 1; i++)
        for (int j = heightStart; j < heightEnd - 1; j++)
            result.SetPixel(i, j, img.GetPixel(i, j));

    string path = string.Format("C:\\Фото\\{0}_{1}.jpg", fileName, n);
    result.Save(path);
}
 
  • Спасибо
Реакции: bedl0

tatarin

Client
Регистрация
28.10.2012
Сообщения
795
Благодарностей
132
Баллы
43
В зеброиде есть такая функция, обрезки!
 

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