Чем ускорить процесс удаления части изображения?

  • Автор темы Автор темы inilim
  • Дата начала Дата начала

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Реакции
171
Баллы
43
Ребят, может кто подскажет как ускорить процесс удаления части изображения.

Нужен софт ( или дополнение к софту ) который дает возможность просто ставить две координаты (Два клика или выделение), и софт сам между этими координатами удаляет изображение на всю ширину. Оставшиеся части просто схлопываются друг с другом. Вручную это делать ОЧЕНЬ долго.
Изображения разных размеров, удаление будет производится в любом месте многочисленно раз.

Обрабатываю по 1000 картинок в день, в фотошопе это очень долго, экшены не спасут (проверено) :(
Обращался почти на все возможные форумы и сайты. Все утверждают что готового решения нет, нужно разрабатывать, что звучит пи**ец как тупо.
 
не катит?
быстрое кадрирование фото - мне кажется надо гуглить...
 
@Gfoblin Вы хоть пост до конца прочитали?
Данное видео даже близко не стояло к решению задачи.

Извиняюсь за пошлость!

37047340_fb448fe433b0edc13ea2fd6f166bcd40_800.gif
 
@Gfoblin Вы хоть пост до конца прочитали?
Данное видео даже близко не стояло к решению задачи.

Извиняюсь за пошлость!

37047340_fb448fe433b0edc13ea2fd6f166bcd40_800.gif
Да на примере понятнее :)
Решение: IM+php (другой язык) под заказ :)
 
@Astraport Решается на любом языке, дело в том что готового решение не находится. Оно есть, уверен, инфа сотка!
 
2 координаты высоты изображения, обрезка между ними и потом склейка? и сохранение изображения? Нужны еще действия?
 
вроде-бы нет, вы что то задумали? :-)

Код:
Развернуть Свернуть Копировать
int firstPoint = 150; // 1 точка высоты для обрезки
int secondPoint = 300; // 2 точка высоты для обрезки (обрезает с 150 по 300)
Bitmap bmp1 = new Bitmap(Image.FromFile(@"D:\1.jpg")); // Фото исходник
int width = bmp1.Width;
int height = bmp1.Height;
int newHeight = height - (secondPoint - firstPoint);

Image img = new Bitmap(width,newHeight);
Graphics g = Graphics.FromImage(img);

Bitmap bmp2 = bmp1.Clone(new Rectangle(0, 0, width, firstPoint), bmp1.PixelFormat);
g.DrawImage(bmp2, new Point(0, 0));
Bitmap bmp3 = bmp1.Clone(new Rectangle(0, secondPoint, width, (height - secondPoint)),bmp1.PixelFormat);
g.DrawImage(bmp3, new Point(0, firstPoint));
img.Save(@"D:\33.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); // Сохранение изобр. 33.jpg на диск D:

Попробуйте, вроде работает. Думаю сами прикрутите входные данные и цикл.
 
  • Спасибо
Реакции: inilim
Попробуйте, вроде работает.
Код:
Развернуть Свернуть Копировать
using System;

namespace Sample
{
    class Program
    {
      
        static void Main(string[] args)
        {
            int firstPoint = 1; // 1 точка высоты для обрезки
            int secondPoint = 85; // 2 точка высоты для обрезки (обрезает с 150 по 300)
            Bitmap bmp1 = new Bitmap(Image.FromFile(@"C:\Users\home\Desktop\111\screencapture-00_29_36.jpg")); // Фото исходник
            int width = bmp1.Width;
            int height = bmp1.Height;
            int newHeight = height - (secondPoint - firstPoint);
            
            Image img = new Bitmap(width,newHeight);
            Graphics g = Graphics.FromImage(img);
            
            Bitmap bmp2 = bmp1.Clone(new Rectangle(0, 0, width, firstPoint), bmp1.PixelFormat);
            g.DrawImage(bmp2, new Point(0, 0));
            Bitmap bmp3 = bmp1.Clone(new Rectangle(0, secondPoint, width, (height - secondPoint)),bmp1.PixelFormat);
            g.DrawImage(bmp3, new Point(0, firstPoint));
            img.Save(@"C:\Users\home\Desktop\111\33.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); // Сохранение изобр. 33.jpg на диск D:
            Console.ReadKey();
        }
    }
}

какие классы требуется импортировать?
 
Последнее редактирование:
Думаю сами прикрутите входные данные и цикл.
Вы наверно подумали что мне нужно массово все картинки обрезать под одними координатами для ZP. Нет ZP и рядом не стоит. Поэтому мы и в оффтопе. Мне каждую картинку нужно индивидуально просматривать и решить что удалить. :-) Но ваше решение попробую использовать по другому.
 
Без ссылки работает, благодарю за код. Вот теперь мне бы интерфейс придумать :-)

ну самый простой способ наверное будет заганять фотки в цикле в picturebox, на них отмечать координаты и обрезать.
Координаты можно получать так:
Код:
Развернуть Свернуть Копировать
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            int x =e.X; // координата по оси X
            int y = e.Y; // координата по оси Y
        }
 
  • Спасибо
Реакции: inilim

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