Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HTML как картинка 
:(
    Опции темы
AntonSaburov
Дата 5.7.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Появилась еще одна занятная задачка - показать HTML в виде картинки. Например, чтобы текст не скопировать было. Или вставить изображение в файл. Такое изображение конечно не должно быть большое, но тем не менее.

Эта тема сильно связана с более ранней темой Запомнить изображение в файл

Сначала код, а потом несколько комментариев

Код

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;

import javax.swing.*;
import javax.imageio.*;


public class testIm
{
  public JLabel lbl = new JLabel();
  public int w = 0;
  public int h = 0;

  public void saveFile()
  {
    try {
      BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
      Graphics g = bi.getGraphics();                  
      g.setColor(Color.WHITE);
      g.fillRect(0,0,w,h);
      JLabel l = new JLabel();
      l.setBounds(0,0,w,h);
      l.setText(lbl.getText());
      l.paint(g);

      FileOutputStream os1 = new FileOutputStream("test.png");
      ImageIO.write(bi, "png", os1);
      os1.close();
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }

  public static void main(String[] args)
  {
    StringBuffer sb = new StringBuffer();
    for(int i=0; i<50; i++) {
      sb.append("  SOME TEXT SOME TEXT SOME TEXT  <BR>");
    }
    testIm t = new testIm();
    t.lbl.setText("<HTML><BODY>"+sb.toString()+"<BODY></HTML>");
    Dimension d = t.lbl.getPreferredSize();
    t.w = d.width;
    t.h = d.height;
    System.out.println("h="+t.w+", h="+t.h);
    t.saveFile();
  }

}


Тут важно отметить вот какой момент - сначала создается объект JLabel и ему устанавливается HTML-текст. После этого получают предпочтительные размеры (через getPreferredSize) и после этого создается новый обхект класса JLabel и ему задаются размеры через setBounds.
А дальше все как в ранее указанной теме. В итоге получится файл, который точно соответствует по размеру HTML разметке.

Вы можете увеличить/уменьшить/видоизменить HTML-текст, который создается в примере и посмотреть, как все будет. 


PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0868 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.