обратно
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);}
}
}
обратно