Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 184

Загрузка изображения

08.03.2014, 17:06. Показов 609. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здесь я использую jogl для загрузки изображения через пиксели. Сначала считываю изображение с помощью функции read класса ImageIO, затем все сохраняю в массив пикселей и вывожу их посредством opengl.
Вопрос : Почему не вся картинка загружается (некоторые цвета вообще теряются) ?
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
 
import com.jogamp.opengl.util.Animator;
 
class Pixel {
    float x0,y0;
    float[] color = new float[3];
}
 
public class Main implements GLEventListener {
 
    Animator anim;
    BufferedImage bufImg;
    Pixel [][] bitmap;
    int w,h;
    
    public Main() {
        try {
            bufImg = ImageIO.read(new File("img/firefox.png"));
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        w = bufImg.getWidth(); h = bufImg.getHeight();
        bitmap = new Pixel[h][w];
        for(int y=0; y<h; y++)
            for(int x=0; x<w; x++) {
                int col = bufImg.getRGB(y, x);
                bitmap[y][x] = new Pixel();
                bitmap[y][x].x0 = x;
                bitmap[y][x].y0 = y;
                bitmap[y][x].color[0] = ((col >> 16)&0xff)/255.0f;
                bitmap[y][x].color[1] = ((col >> 8)&0xff)/255.0f;
                bitmap[y][x].color[2] = (col&0xff)/255.0f;
            }
        GLProfile glp = GLProfile.getDefault();
        GLCapabilities glcaps = new GLCapabilities(glp);
        GLCanvas glcanvas = new GLCanvas(glcaps);
        glcanvas.setPreferredSize(new Dimension(w,h));
        glcanvas.addGLEventListener(this);      
        anim = new Animator(glcanvas);
        JFrame jfrm = new JFrame("Spec-Effect");
        jfrm.setResizable(false);
        jfrm.setLocation(100, 100);
        jfrm.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent we) {
                anim.stop();
                System.exit(0);             
            }
        });
        jfrm.add(glcanvas);     
        jfrm.pack();
        jfrm.setVisible(true);  
        anim.start();
    }
    
    public static void main(String[] args) {        
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Main();
            }
        });
    }
 
    @Override
    public void display(GLAutoDrawable drawable) {      
        GL2 gl = drawable.getGL().getGL2();             
        gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
        gl.glBegin(GL2.GL_POINTS);
        for(int y=0; y<h; y++)
            for(int x=0; x<w; x++) {
                gl.glColor3f(bitmap[y][x].color[0],
                        bitmap[y][x].color[1], bitmap[y][x].color[2]);
                gl.glVertex2f(bitmap[y][x].y0, bitmap[y][x].x0);
            }
        gl.glEnd();
    }
 
    @Override
    public void dispose(GLAutoDrawable arg0) {
        
    }
 
    @Override
    public void init(GLAutoDrawable drawable) {
        GL2 gl = drawable.getGL().getGL2();
        gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
        gl.glMatrixMode(GL2.GL_PROJECTION);
        gl.glLoadIdentity();
        gl.glOrtho(0, w, h, 0, -1.0, 1.0);
    }
 
    @Override
    public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3,
            int arg4) {
        
    }
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.03.2014, 17:06
Ответы с готовыми решениями:

Загрузка изображения на JApplet
Пишу первую программу по загрузки изображения на JApplet. Почему ничего не происходит? package Applets; import...

Android: Сохранение и загрузка изображения в/из SQLite
Доброго времени суток. Необходимо записать в базу только что нарисованное изображение на canvas. В базу записываю как byte. Тип в SQLite...

Загрузка картинок с сжатием и конвертированием изображения + массовая загрузка
Приветствую форумчане Я можно сказать что новичок в PHP но сайты пишу уже давно, и столкнулся с тем что мне нужно огромный архив на...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.03.2014, 17:06
Помогаю со студенческими работами здесь

Загрузка изображения в Image с сохранении соотношения сторон изображения
загрузка изображения в Image(с фиксированным размером) при этом изображение должно сохранить соотношение сторон и полностью уместится в...

Загрузка изображения (только изображения)
Нужно обычная форма через которую надо загружать изображение в папку load Вот что я пока что написал : &lt;!DOCTYPE HTML PUBLIC...

Загрузка изображения в БД
Доброго времени суток. Подскажите, как можно организовать загрузку и выгрузку изображения в БД. Я создаю для пробы блог. Только начинаю...

Загрузка изображения
printf(&quot; &lt;form action='news/result.php' method='post' &gt; &lt;table border='2' class='newsadd'&gt; &lt;tr&gt;&lt;td colspan='2'...

Загрузка изображения
Пытаюсь загрузить изображение во флеш Нашёл код ... var symbol_logo:Class; ... Работает, но если я делаю это в функции, в...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru