Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 18.07.2015
Сообщений: 8

Неправильно сохраняется изображение!

12.04.2016, 19:10. Показов 673. Ответов 2
Метки нет (Все метки)

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

Написал небольшой код, суть такова:

Он смотрит на картинку, делит ее на фрагменты, находит среднее из этих фрагментов, и уже из средних строит новую картинку, фрагменты 4 на 4.

Вот сам код:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
 
public class test {
    static BufferedImage image;
    static double[][] input;
    static double[][] layer2; 
    static double[][] layer3; 
    static double sum2;
    static float[][] in1;
    static float[][] in2;
    static float[][] in3;
 
    public static void main(String[] args) {
        String filename = "C://Image//obj11__0.png";
        init_l1(filename); 
        double sreds = 0;
        layer2 = new double[32][32];
        for (int i = 0; i < 128; i = i + 4) {
            for (int j = 0; j < 128; j = j + 4) {
                for (int k = i; k < i + 4; k++) {
                    for (int l = j; l < j + 4; l++) {
                        sreds = sreds + input[k][l];
                    }
                }
                sreds = Math.round((sreds / 16) * 100.0) / 100.0;
                layer2[i/4][j/4] = sreds;
            }
        }
        create_image_bipolar(layer2);
    }
 
    private static void create_image_bipolar(double[][] bipolar2) {
        Color[][] col = new Color[32][32];
        BufferedImage bufferedImage = new BufferedImage(col.length, col.length, BufferedImage.TYPE_INT_RGB);
        for (int i = 0; i < 128; i++) {
            for (int j = 0; j < 128; j++) {
                Color c = new Color((float) in1[i][j]/255, (float) in2[i][j]/255, (float) in3[i][j]/255, (float) layer2[i/4][j/4]);
                col[i/4][j/4] = c;
                bufferedImage.setRGB(i/4, j/4, col[i/4][j/4].getRGB());
            }
        }
        for(int i = 0; i < 32; i++){
            for(int j=0; j < 32; j++){
                System.out.print(col[i][j] + " ");
            }
            System.out.println(" ");
        }
        File outputfile = new File("C://test//image.png");
        try {
            ImageIO.write(bufferedImage, "png", outputfile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    private static void init_l1(String filename) {
        String f1 = filename;
        try {
            File file = new File(f1);
            image = ImageIO.read(file);
            int xi = image.getWidth();
            int yi = image.getHeight();
            input = new double[xi][yi];
            in1 = new float[xi][yi];
            in2 = new float[xi][yi];
            in3 = new float[xi][yi];
            double sum1 = xi * yi;
            sum2 = 0;
            for (int i = 0; i < xi; i++) {
                for (int j = 0; j < yi; j++) {
                    Color c = new Color(image.getRGB(j, i));
                    float ir = c.getRed();
                    float ig = c.getGreen();
                    float ib = c.getBlue();
                    double y = (0.3 * ir + 0.59 * ig + 0.11 * ib) / (255);
                    double ny = Math.round(y * 100.0) / 100.0;
                    sum2 = sum2 + ny;
                    input[i][j] = ny;
                    in1[i][j] = ir;
                    in2[i][j] = ig;
                    in3[i][j] = ib;
                }
            }
            sum2 = Math.round((sum2 / sum1) * 100.0) / 100.0;
        } catch (Exception e) {
            System.out.println("Error! " + e);
        }
    }
}
В принципе он работает, но сохраняет картинку перевернутой вбок

Изображения прикреплены(Видите! видите! левая картинка лежит на боку)
Изображения
  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2016, 19:10
Ответы с готовыми решениями:

GDI+ неправильно сохраняется изображение
Всем доброго времени суток! Возникла проблема при сохранении BMP при помощи функций GDI+. Делаю последовательно вызовы LockBits и...

Неправильно сохраняется дата в базе данных
У меня такая проблема: есть таблица News в mysql, и в ней есть 2 поля start_date и end_date, типа datetime. В php скрипте перед...

Не сохраняется изображение
Здравствуйте, нужно сделать графический редактор. В принципе все готово, но не работает сохранение после рисования, вместо рисунка черный...

2
0 / 0 / 1
Регистрация: 18.07.2015
Сообщений: 8
13.04.2016, 20:18  [ТС]
Проблема решилась проще простого, в строке
Java
1
bufferedImage.setRGB(y, x, col[x][y].getRGB());
Поменял местами x и y, и все стало на свои места! (Надо было внимательнее прочитать о функции setRGB();)
Хотя сначала проблема казалась странной...
Ведь если вывести информацию из массива Color, то по его части, можно увидеть очертания грибочка!
Миниатюры
Неправильно сохраняется изображение!  
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
13.04.2016, 21:30
Цитата Сообщение от Mihail_Omelin Посмотреть сообщение
то по его части, можно увидеть очертания грибочка!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2016, 21:30
Помогаю со студенческими работами здесь

Не сохраняется изображение
{$apptype windows} {$reference 'System.Windows.Forms.dll'} {$reference 'System.Drawing.dll'} Var myForm:...

Не сохраняется изображение из pictureBox
Мне нужно сохранить изображение из pictureBox2 в .bmp файл. Но сохраняется только серый фон, вместо нужного изображения. Что я сделал не...

Не сохраняется изображение в файл
Есть 2 файла: 1.bmp и 2.bmp. Загружаю в программу первый файл 1.bmp-работает. Дорисовываю на загруженном изображении...

Drawstring: изображение сохраняется некачественным
Image img = new Bitmap(790, 1230); Graphics g = Graphics.FromImage(img); Rectangle fillRect = new...

Не сохраняется изображение png в файл
Доброго времени суток! Не получается записать изображение в файл. cropButtonSlot получает координаты прямоугольника, по форме которого...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru