Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BufferedImage image1 = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
- BufferedImage image2 = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
- for (int i = 0; i < 100; i++) {
- for (int j = 0; j < 100; j++) {
- int gray = (i + j) + (( i + j) << 8) + ((i + j) << 16);
- image1.setRGB(i, j, gray);
- int bw = 0;
- if (Math.random() * 256 < (i+j)) bw = 0xFFFFFF;
- image2.setRGB(i, j, bw);
- }
- }
- JFrame window1 = new JFrame();
- boolean flip = false;
- BufferedImage image;
- while (true) {
- if (flip) image = image1;
- else image = image2;
- window1.getContentPane().removeAll();
- window1.setTitle("pic");
- JLabel label = new JLabel(new ImageIcon(image));
- window1.add(label);
- window1.setBounds(100, 100, 100, 200);
- window1.setVisible(true);
- Thread.sleep(500);
- flip = !flip;
- }
- int main()
- {
- const int S = 300; // Размер поля
- const int R = 256; // Диапазон яркостей
- for (int y = 0; y < S; ++y)
- {
- int error = 0;
- for (int x = 0; x < S; ++x)
- {
- int ideal_c = (x + y) * (R - 1) / (2 * (S - 1));
- int corrected_c = ideal_c + error;
- int actual_c = corrected_c < R / 2 ? 0 : R - 1;
- error = corrected_c - actual_c;
- // Исходное поле: нарисовать точку (x, y) с яркостью `ideal_c`
- // Дизеринг: нарисовать точку (x, y) с яркостью `actual_c`
- }
- }
- }
Add Comment
Please, Sign In to add comment