Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Вежливость-главное оружие
 Аватар для some_name
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446

Как из массива вырезать массив?

01.12.2014, 13:31. Показов 2299. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравсвуйте!

Как из изображения, представленного в виде массива, веразть часть, используя только System.arraycopy или что типа этого.
Например:

Делаю так:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 public static int[] cut(int[] in, int[] out, int w, int h, Point p,
        Dimension d) {
    if (p == null) p = new Point(w / 2, h / 2);
    int x1 = p.x - d.width / 2;
    int x2 = p.x + d.width / 2;
    int y1 = p.y - d.height / 2;
    int y2 = p.y + d.height / 2;
    return cut(in, out, w, h, x1, x2, y1, y2);
    }
 
    public static int[] cut(int[] in, int[] out, int w, int h, int x1, int x2,
        int y1, int y2) {
    if (out == null) out = new int[(x2 - x1) * (y2 - y1)];
 
    y1 *= w;
    y2 *= w;
    int length = x2 - x1;
    int offset = 0;
    for (int k = y1; k <= y2; k += w) {
        System.arraycopy(in, k + x1, out, offset, length);
        offset += length;
    }
 
    return out;
    }


Получается хрень полная.
Вызываю
Java
1
2
3
4
5
6
7
       int s = 150;
 
        int x1 = p.x - s /2;
    int x2 = p.x + s /2;
    int y1 = p.y - s /2;
    int y2 = p.y + s /2;
    Tool.cut(pixels, current, w, h, x1, x2, y1, y2);
note:
Java
1
private int[] current =  new int[s * s ];
note:
Java
1
2
3
int h = source.getHeight();
    int w = source.getWidth();
    int[] pixels = source.getRGB(0, 0, w, h, null, 0, w);

current в изображение преобразую так:
Java
1
2
3
4
5
public static BufferedImage arrayToImage(int[] pixels, int w, int h) {
    BufferedImage target = new BufferedImage(w, h, BufferedImage.TYPE_4BYTE_ABGR);
    target.setRGB(0, 0, w, h, pixels, 0, w);
    return target;
    }
Получаю такое:


Мало того, что форма не квадратная(150х150), так еще и изображение кривое!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2014, 13:31
Ответы с готовыми решениями:

Как из массива вырезать случайный элемент?
и вставить в див

Вырезать куски массива
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее спасибо: Дан одномерный массив А, состоящий из N различных...

Вырезать из строки совпадения с решетками и записать их в массив
Доброго времени суток. Есть строка вида: #room#-комн. квартира, #area# кв.м., #floor# этаж Нужно вырезать из строки все...

1
Вежливость-главное оружие
 Аватар для some_name
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
01.12.2014, 22:52  [ТС]
Решено.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static int[] cut(int[] in, int[] out, int w, int h, int x1, int y1,
        int x2, int y2) {
    int cols = x2 - x1;
    int rows = y2 - y1;
    int n = cols * rows;
    if (out == null) out = new int[n];
    int offset = 0;
    int index = w * y1 + x1;
    for (int y = y1; y < y2; ++y) {
        System.arraycopy(in, index, out, offset, cols);
        index += w;
        offset += cols;
    }
    return out;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2014, 22:52
Помогаю со студенческими работами здесь

Вырезать из массива диапазон, который задаётся индексами a, b
Пример: { 1, 2, 3, 4, 5 } a = 1, b = 3 Результат {1, 5} Я сделал но меня выводит диапазон который я введу а не удаляет его( ...

Вырезать данные из массива больше скользящего среднего
Все пытаюсь убрать данные из вектора много больше среднего, выбрала 50 предыдущих средних. Должо быть так: Усредняем первые 50...

Массив: Как заполнить массив, и как добраться до элемента массива record'ов?
Как заполнить массив, и как добраться до элемента массива record'ов? type myrec = record word1 : string; word2 :...

Символьный массив: в заданном предложении вырезать каждую третью букву каждого слова
Дано предложение: &quot;ЛЕНЬ - МАТЬ ВСЕХ ПОРОКОВ&quot; В заданном предложении вырезать каждую третью букву каждого слова. С помощью функций языка...

Вырезать из массива элемент, значение которого является средним арифметическим максимального и минимального
С клавиатуры вводят 13 элементов массива ТТ. Написать программу, вырезает из массива элемент, значение которого является средним...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru