обратно

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

public class Image2Obraz extends Component{

  public boolean obraz [][];
    
  Image2Obraz(String Imstr, String name_obrazFile,   int IDEAL_X, int IDEAL_Y)
  {

    obraz = new boolean [IDEAL_Y][IDEAL_X];

    boolean pixels[][];          // Массив с точками
    int width, height;       // width - ширина, height - высота
    int pixBuffer[];


    Image img=null;
    try{
      img=getToolkit().getImage(Imstr);
      MediaTracker Mt=new MediaTracker(this);
      Mt.addImage(img, 0);
      Mt.waitForID(0);
    }catch(Exception e){}
    width=img.getWidth(null);
    height=img.getHeight(null);
    pixBuffer=new int[width*height];
    PixelGrabber Pg=null;
    try{
      Pg=new PixelGrabber(img, 0, 0, width, height, pixBuffer, 0, width);
      Pg.grabPixels();
    }catch(Exception e){}
    pixels=new boolean [height][width];
    int k=0;
    for(int i=0;i=8388608)
          pixels[i][j]=true;
        else pixels[i][j]=false;
        k++;
      }
    }

//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////
//////////////////////////////////////////


//	System.out.println("Образ считан из файла");


	FileOutputStream obrazFile;
	int i, j, l, r, t, b, tj, ti;




  try{
	obrazFile = new FileOutputStream(name_obrazFile);

	// Обрубаем края
	for (  i = 0 ; i < height ; i ++ )
	{

		for ( j = 0 ; j < width && !pixels[i][j]; j ++ )
			;
        	if ( j < width ) break;
		
	}
	t = i;

	for (  i = height - 1 ; i >= 0 ; i -- )
	{

		for ( j = 0 ; j < width && !pixels[i][j]; j ++ )
			;
        	if ( j < width ) break;
		
	}
	b = i;

	for (  j = 0 ; j < width; j ++ )
	{

		for ( i = 0 ; i < height && !pixels[i][j]; i ++ )
			;
        	if ( i < height ) break;
		
	}
	l = j;

	for (  j = width - 1 ; j >= 0; j -- )
	{

		for ( i = 0 ; i < height && !pixels[i][j]; i ++ )
			;
        	if ( i < height ) break;
		
	}
	r = j;
	
	float dx, dy;
	dx = ( (float) IDEAL_X ) / ( (float) (r - l + 1) );
	dy = ( (float) IDEAL_Y ) / ( (float) (b - t + 1) );

/*	System.out.println("Левый писксель образа = "+l);
	System.out.println("Правый писксель образа = "+r);
	System.out.println("Верхний писксель образа = "+t);
	System.out.println("Нижний писксель образа = "+b);
	System.out.println("dx = "+dx);
	System.out.println("dy = "+dy);
*/
	for (  i = 0 ; i < IDEAL_Y ; i ++ ) // Нормируем картинку в obraz
		for ( j = 0 ; j < IDEAL_X; j ++ )
		{
			ti = (int)( t+((float)i)/((float)dy) );
			tj = (int)( l+((float)j)/((float)dx) );
			if ( ti < t )
			{
				System.out.println("Корректируем : ti = "+ti+" < t = "+t);
				ti = t;
			}
			if ( ti > b )
			{
				System.out.println("Корректируем : ti = "+ti+" > b = "+b);
				ti = b;
			}
			if ( tj < l )
			{
				System.out.println("Корректируем : tj = "+tj+" < l = "+l);
				tj = t;
			}
			if ( tj > r )
			{
				System.out.println("Корректируем : tj = "+tj+" > r = "+r);
				tj = r;
			}
			obraz [i][j] = pixels[ti][tj];
		}

	//	Сбросим образ в файл obraz
	for (  i = 0 ; i < IDEAL_Y ; i ++ )
	{
		for ( j = 0 ; j < IDEAL_X; j ++ )
		{
			if ( obraz [i][j] )
				obrazFile.write('1');
			else
				obrazFile.write('0');
		}
		obrazFile.write('\n');

	}
	System.out.println("Создан образ (файл "+name_obrazFile+")");


  } 
  catch(IOException e) 
  {System.out.println("Чего-то с файлом");System.exit(0);}




  }
}

 обратно