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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести файлы в jpg формате, Какой объект занести в ImageIO.write 
:(
    Опции темы
GIK
Дата 21.10.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Всем доброго времени суток smile 
Возможно несовсем в тот топ запостил, но задумку реально хочу использовать в апплете.
У меня не получается вывести фокти в формате jpg, вернее незнаю какой объект занести в метовImageIO.write. Предположил что можно объект image который лежит в массиве, но ничего не вышло. 

 
Код

/*  <applet code="imgSkrebling.class" width=500 height=500><param name="img" value="gaioz.jpg"></applet>*/

import java.awt.*;
import java.applet.*;
import java.awt.image.*;
import java.awt.event.*;

import java.awt.geom.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

 public class imgSkrebling extends Applet{  
  Image img;
  Image cell[]= new Image[12*12];
  int iw, ih;
  int tw, th;
  String userImg="gaioz.jpg";
 public void init(){
  try{
   img = getImage(getDocumentBase(), userImg);
   //Media  
   iw=img.getWidth(null);   
   ih=img.getHeight(null);
   tw= iw / 12;
   th= ih / 12;
   CropImageFilter Area; //область-прямоугольник 
   FilteredImageSource sourcArea;
    for(int y=0; y<12; y++){
     for(int x=0; x<12; x++){
      Area = new CropImageFilter(tw*x, th*y, tw, th);
      sourcArea = new FilteredImageSource(img.getSource(), Area);  
      int i = y*12+x;
      cell[i] = createImage(sourcArea);
     } 
    }
   
 }catch(Exception e){}

try{
     for(int i=0; i<(12*12); i++){                  
      FileOutputStream jpgStr = new FileOutputStream("im1" + i + ".jpg"); 
      ImageIO.write(cell[i], "jpg", jpgStr); 
      jpgStr.close();
     }
    }
  catch(Exception ex) {
 }
}
 public void paint(Graphics g){
}   
}


ЗЫ: Нет подходящей литературы, подкиньте плз кто нибуть ссылку на русском.
 

Это сообщение отредактировал(а) GIK - 21.10.2006, 11:29


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
powerOn
Дата 21.10.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 2
Всего: 159



Цитата(GIK @  21.10.2006,  11:40 Найти цитируемый пост)
У меня не получается вывести фокти в формате jpg, вернее незнаю какой объект занести в метовImageIO.write


Какое исключение вылетает? В image должен быть RenderedImage - это интерфейс который реализует например BufferedImage.



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
GIK
Дата 21.10.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата(powerOn)

В image должен быть RenderedImage - это интерфейс который реализует например BufferedImage.

Тогда мне нужно получить от пустого BufferedImage объект Graphics, и отрисовать на нем облать Area полученную от CropImageFilter, с соурсами sourcArea полученные от  FilteredImageSource. 
Как это сделать?




--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
powerOn
Дата 21.10.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 2
Всего: 159



Самый банальный способ следующий:
Вот в этой строке ты получаешь объект класса Image:
Цитата(GIK @  21.10.2006,  11:40 Найти цитируемый пост)
     cell[i] = createImage(sourcArea);

на основе его можно создать создать BufferegImage:
Код

BufferedImage bi = new BufferedImage(cell[i].getWidth(null), cell[i].getHeight(null), BufferedImage.TYPE_INT_ARGB);
bi.getGraphics().drawImage(cell[i], 0,0, null);




--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
GIK
Дата 22.10.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: нет
Всего: 14



Цитата(powerOn)

на основе его можно создать создать BufferegImage:

Получив ширину с высотой и загрузив в контескт BufferegImage данные?
Тогда почему у меня не получается плодить картинки smile , вроде все правильно???
Код

 /*  <applet code="imgSkrebling.class" width=500 height=500><param name="img" value="gaioz.jpg"></applet>*/

import java.awt.*;
import java.applet.*;
import java.awt.image.*;
import java.awt.event.*;

import java.awt.geom.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;

 public class imgSkrebling extends Applet implements ActionListener{
  Image img;
  Image cell[]= new Image[12*12];
  int iw, ih;
  int tw, th;
  String userImg="gaioz.jpg";

  Button but1=new Button("Go");
  
 public void init(){
  but1.addActionListener(this);
 
/* В этом блоке будем создавать прямоугольники с изображениями и забивать их в массив */ 
  try{
   img = getImage(getDocumentBase(), userImg);
   //Media  
   iw=img.getWidth(null);   
   ih=img.getHeight(null);
   tw= iw / 12;
   th= ih / 12;
   CropImageFilter Area; //область-прямоугольник 
   FilteredImageSource sourcArea; //Этот объект позволяет обратится к соурсам в определенной облатся
    for(int y=0; y<12; y++){
     for(int x=0; x<12; x++){
      Area = new CropImageFilter(tw*x, th*y, tw, th);
      sourcArea = new FilteredImageSource(img.getSource(), Area);  
      int i = y*12+x;
      cell[i] = createImage(sourcArea);
     } 
    }   
 }catch(Exception e){}

 setLayout(new FlowLayout(FlowLayout.RIGHT, 12,12));
add(but1);
}

public void actionPerformed(ActionEvent e){
 try{      
     for(int i=0; i<12*12; i++){
      BufferedImage bi = 
      new BufferedImage(cell[i].getWidth(null),cell[i].getHeight(null) , BufferedImage.TYPE_INT_ARGB);
      bi.getGraphics().drawImage(cell[i], 0, 0, null);  //Загружаем в контекст буфера данные из cell[]       
     
      FileOutputStream os = new FileOutputStream("im" + i + ".jpg"); 
      ImageIO.write(bi, "jpg", os); 
      os.close();
     }
    }
   catch(Exception ex) {
   //ex.printStackTrace();
  }
}


 public void paint(Graphics g) {
 } 
   
} 




--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
powerOn
Дата 22.10.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 2
Всего: 159



Цитата(GIK @  22.10.2006,  14:40 Найти цитируемый пост)
Тогда почему у меня не получается плодить картинки smile , вроде все правильно???

А исключения имеются? Вероятно cell[i] не содержит требуемой картинки.
Вот пример простой с использованием BufferedImage для сохранения картинки:
Код

import java.awt.image.BufferedImage;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
    }
                         
    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jButton1.setText("jButton1");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.PAGE_END);

        pack();
    }                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        int w = getWidth();
        int h = getHeight();

        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
        paint(bi.getGraphics());
        try {
            FileOutputStream os = new FileOutputStream("im.jpg");
            ImageIO.write(bi, "jpg", os); 
            os.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        } 

    }                                        
    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
                   
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
}



--------------------
user posted image нет времени думать - нужно писать КОД!

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

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

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


 




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


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

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