main(int ac,char *av[])
{
	ImageData *img,*outimg;
	int res;
	int x,y,mx,my;

	if(ac<3) {
		printf("パラメータが足りません");
		return;
	}

	// ファイルより画像データの読み込み
	res=readBMPfile(av[1],&img);
	if(res<0) {
		printf("画像が読めません");
		return;
	}

	// 結果格納用画像データ作成
	outimg=createImage(img->width,img->height,24);
	
	effect(img,outimg);

	writeBMPfile(av[2],outimg);
	disposeImage(img);
	disposeImage(outimg);

}
main(int ac,char *av[])
{
	ImageData *img,*outimg;
	int res;
	int x,y,mx,my;

	if(ac<6) {
		printf("パ??ータが足りません");
		return;
	}


	res=readBMPfile(av[1],&img);
	if(res<0) {
		printf("画?が読めません");
		return;
	}


	outimg=createImage(img->width,img->height,24);
	
	effect(img,outimg,atoi(av[3]),atoi(av[4]),atoi(av[5]));

	writeBMPfile(av[2],outimg);
	disposeImage(img);
	disposeImage(outimg);

}
main(int ac,char *av[])
{
	ImageData *img,*outimg;
	//double rad;
	double a,b,c,d,e,f;
	int res;

	if(ac<3+2+6) {
		printf("パ??ータが足りません");
		return;
	}


	res=readBMPfile(av[1],&img);
	if(res<0) {
		printf("画?が読めません");
		return;
	}
	sscanf(av[5],"%lf",&a);
	sscanf(av[6],"%lf",&b);
	sscanf(av[7],"%lf",&c);
	sscanf(av[8],"%lf",&d);
	sscanf(av[9],"%lf",&e);
	sscanf(av[10],"%lf",&f);



	transform(img,&outimg,atoi(av[3]),atoi(av[4]),a,b,c,d,e,f);

	writeBMPfile(av[2],outimg);
	disposeImage(img);
	disposeImage(outimg);

}
Esempio n. 4
0
int main(int ac, char *av[])
{
	ImageData *img, *outimg;
	int res;
	int nx, ny;

	if(ac < 3) {
		printf("invalid parameters!");
		return 0;
	}

	res = readBMPfile(av[1], &img);
	if(res < 0) {
		printf("image not found!");
		return 0;
	}

	nx = img->width;
	ny = img->height;

	outimg = createImage(nx, ny, 24);

	transform(img, outimg);

	writeBMPfile(av[2], outimg);
	disposeImage(img);
	disposeImage(outimg);

	return 0;
}
Esempio n. 5
0
main(int ac,char *av[])
{
	ImageData *img,*outimg;
	int res;
	int x,y,mx,my;

	if(ac<3) {
		printf("	");
		return;
	}


	res=readBMPfile(av[1],&img);
	if(res<0) {
		printf("Вс(%d)\n",res);
		return;
	}


	outimg=createImage(img->width,img->height,24);
	
	effect(img,outimg,atoi(av[3]));

	writeBMPfile(av[2],outimg);
	disposeImage(img);
	disposeImage(outimg);

}
main(int ac,char *av[])
{
	ImageData *img,*outimg;
	int res;
	int nx,ny;

	if(ac<5) {
		printf("パ??ータが足りません");
		return;
	}


	res=readBMPfile(av[1],&img);
	if(res<0) {
		printf("画?が読めません");
		return;
	}
	nx=atoi(av[3]);
	ny=atoi(av[4]);


	outimg=createImage(nx,ny,24);

	transform(img,outimg);

	writeBMPfile(av[2],outimg);
	disposeImage(img);
	disposeImage(outimg);

}
Esempio n. 7
0
File: Image.cpp Progetto: s50/mona
    void Image::resize(int h, int w)
    {
        if (height == 0 || width == 0) {
            return;
        }
        MessageInfo msg;
        if (MonAPI::Message::sendReceive(&msg, this->guisvrID, MSG_GUISERVER_CREATEBITMAP, w, h, Color::lightGray)) {
            printf("%s:%d:ERROR: can not connect to GUI server!\n", __FILE__, __LINE__);
            return;
        }
        if (msg.arg2 == 0) return;

        // GUIサーバー上のビットマップオブジェクトを生成する
        guiserver_bitmap* b = (guiserver_bitmap*)MonAPI::MemoryMap::map(msg.arg2);
        if (b == NULL) {
            printf("%s:%d:ERROR: can not get image data!\n", __FILE__, __LINE__);
            return;
        }

        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                int x = (int)(((double)height/(double)h)*i);
                int y = (int)(((double)width/(double)w)*j);
                b->Data[i + w * j] = getPixel(x, y);
            }
        }

        this->width = w;
        this->height = h;
        disposeImage();
        this->bitmap = b;
    }
Esempio n. 8
0
int main(){
	ImageData *img;
	int res;
	int x, y, mx, my;
	Pixel pix1, pix2;

	pix1.r = 255;
	pix1.g = 255;
	pix1.b = 255;
	pix2.r = 0;
	pix2.g = 0;
	pix2.b = 0;
	img = createImage(100, 100, 24);
	for (y = 0; y<100; y++) {
		for (x = 0; x<100; x++) {
			if (x % 2 == y % 2) {
				setPixel(img, x, y, &pix1);
			}
			else {
				setPixel(img, x, y, &pix2);
			}
		}
	}
	writeBMPfile("out.bmp", img);
	disposeImage(img);
}
Esempio n. 9
0
bool ImageLoaderFreeImage::loadInputImage(const QString &imageFileName, QString &errorMessage)
{
    bool result = false;

    FreeImageErrorMessage.clear();

    const FREE_IMAGE_FORMAT fileType = FreeImage_GetFileType(imageFileName.toAscii(), 0);
    FIBITMAP* newImage = FreeImage_Load(fileType, imageFileName.toAscii(), TIFF_CMYK|JPEG_CMYK);

    // Filter out images which FreeImage can load but not convert to Rgb24
    // And images which we simply don't handle
    if (newImage) {
        const FREE_IMAGE_TYPE type = FreeImage_GetImageType(newImage);
        if (type != FIT_BITMAP   // 1pbb Monochrome, 1-8bpp Palette, 8bpp Greyscale,
                                 // 24bpp Rgb, 32bpp Argb, 32bpp Cmyk
            && type != FIT_RGB16 // 16bpp Greyscale, 48bpp Rgb
            ) {
            FreeImage_Unload(newImage);
            newImage = NULL;
        }
    }

    if (newImage) {
        result = true;
        disposeImage();

        m_bitmap = newImage;

        m_widthPixels = FreeImage_GetWidth(m_bitmap);
        m_heightPixels = FreeImage_GetHeight(m_bitmap);

        m_horizontalDotsPerMeter = FreeImage_GetDotsPerMeterX(m_bitmap);
        m_verticalDotsPerMeter = FreeImage_GetDotsPerMeterY(m_bitmap);

        if (m_horizontalDotsPerMeter == 0)
            m_horizontalDotsPerMeter = 2835; // 72 dpi
        if (m_verticalDotsPerMeter == 0)
            m_verticalDotsPerMeter = 2835;

        m_imageFileName = imageFileName;

        if (colorDataType() == Types::ColorTypeRGB && bitsPerPixel() == 32) {
            // Sometimes, there are strange .PSD images like this (FreeImage bug?)
            RGBQUAD white = { 255, 255, 255, 0 };
            FIBITMAP *Image24Bit = FreeImage_Composite(m_bitmap, FALSE, &white);
            FreeImage_Unload(m_bitmap);
            m_bitmap = Image24Bit;
        }
    }

    errorMessage = FreeImageErrorMessage;

    return result;
}
main(int ac,char *av[])
{
    ImageData *img1,*img2;
    Pixel rgb1,rgb2,rgb3;
    int alpha;
    int rr,gg,bb,r1;
    int size;
    int xx,yy,mx,my;
    int i;
    int res;

	if(ac<3) return 4;
	res=readBMPfile(av[1],&img1);
	if(res<0) {
		printf("画像(1)が読めません");
		return;
	}
	res=readBMPfile(av[2],&img2);
	if(res<0) {
		printf("画像(2)が読めません");
		return;
	}
    mx=img2->width;
    my=img2->height;
    if(mx>img1->width) mx=img1->width;
    if(my>img1->height) my=img1->height;
    for(yy=0;yy<my;yy++) {
	    for(xx=0;xx<mx;xx++) {
	        alpha=(xx*255+mx/2)/mx;
	    	getPixel(img1,xx,yy,&rgb1);
	    	getPixel(img2,xx,yy,&rgb2);
	    	rgb3.r=blend(rgb1.r,rgb2.r,alpha);
	    	rgb3.g=blend(rgb1.g,rgb2.g,alpha);
	    	rgb3.b=blend(rgb1.b,rgb2.b,alpha);
	    	setPixel(img1,xx,yy,&rgb3);
	    }
    }
	writeBMPfile(av[3],img1);
	disposeImage(img1);
	disposeImage(img2);
}
Esempio n. 11
0
KHTMLImage::~KHTMLImage()
{
    disposeImage();

    // important: delete the html part before the part or qobject destructor runs.
    // we now delete the htmlpart which deletes the part's widget which makes
    // _OUR_ m_widget 0 which in turn avoids our part destructor to delete the
    // widget ;-)
    // ### additional note: it _can_ be that the part has been deleted before:
    // when we're in a html frameset and the view dies first, then it will also
    // kill the htmlpart
    if ( m_khtml )
        delete static_cast<KHTMLPart *>( m_khtml );
}
Esempio n. 12
0
bool KHTMLImage::openUrl( const KUrl &url )
{
    static const QString &html = KGlobal::staticQString( "<html><body><img src=\"%1\"></body></html>" );

    // Propagate statusbar to our kid part.
    KParts::StatusBarExtension::childObject( m_khtml )->setStatusBar( m_sbExt->statusBar() );

    disposeImage();

    setUrl(url);

    emit started( 0 );

    KParts::OpenUrlArguments args = arguments();
    m_mimeType = args.mimeType();

    emit setWindowCaption( url.prettyUrl() );

    // Need to keep a copy of the offsets since they are cleared when emitting completed
    m_xOffset = args.xOffset();
    m_yOffset = args.yOffset();

    m_khtml->begin( this->url() );
    m_khtml->setAutoloadImages( true );

    DOM::DocumentImpl *impl = dynamic_cast<DOM::DocumentImpl *>( m_khtml->document().handle() ); // ### hack ;-)
    if (!impl) return false;

    if ( arguments().reload() )
        impl->docLoader()->setCachePolicy( KIO::CC_Reload );

    khtml::DocLoader *dl = impl->docLoader();
    m_image = dl->requestImage( this->url().url() );
    if ( m_image )
        m_image->ref( this );

    m_khtml->write( html.arg( this->url().url() ) );
    m_khtml->end();

    /*
    connect( khtml::Cache::loader(), SIGNAL(requestDone(khtml::DocLoader*,khtml::CachedObject*)),
            this, SLOT(updateWindowCaption()) );
            */
    return true;
}
int effect(ImageData *img,ImageData *outimg,int act,int st,int sm)
{
	int val;
	int x,y;
	int xx,yy;

	int f1,f2;

	int err,egg,ebb;
	int sr_x,sg_x,sb_x;
	int sr_y,sg_y,sb_y;
	int r1,g1,b1,dum1,dum2;
	int rr,gg,bb,ed;
	int ro,go,bo;
	int ff;
	int st2,con;
	int sum;
	int endn,endn3,endo;
	Pixel col,ncol;
	ImageData *buf;
	int smooth[9];
	int fil[9]={
		-1,-1,-1,
		-1, 8,-1,
		-1,-1,-1};
	int sobel1[9]={
		 1, 0,-1,
		 2, 0,-2,
		 1, 0,-1};
	int sobel2[9]={
		 1, 2, 1,
		 0, 0, 0,
		-1,-2,-1};
	double	factor[7] = { 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0 };	
	int x1,y1,x2,y2;

	x1=0;
	y1=0;
	x2=img->width-1;
	y2=img->height-1;


	sum=0;
	for(ff=0;ff<9;ff++) {
		if(ff==4) {
			smooth[ff]=10;
			sum+=10;
		}
		else {
			smooth[ff]=sm;
			sum+=sm;
		}
	}

	f1 = (int)((double)FACTOR * factor[act]);
	f2 = (int)((double)FACTOR * (factor[act] - 1.0)/2.0);
	buf=createImage(img->width,img->height,24);

	// 色彩強調??
	for(y=y1;y<=y2;y++) {
		for(x=x1;x<=x2;x++) {
			val = getPixel(img,x,y,&col);	
			rr= col.r;
			gg= col.g;
			bb= col.b;
			ro= ( rr*f1-gg*f2-bb*f2)/FACTOR;
			go= (-rr*f2+gg*f1-bb*f2)/FACTOR;
			bo= (-rr*f2-gg*f2+bb*f1)/FACTOR;
			col.r = ro;
			col.g = go;
			col.b = bo;
			setPixel(buf,x,y,&col);	
		}
	}

	st2=st/2;
	con=66;

	for(y=y1;y<=y2;y++) {
		for(x=x1;x<=x2;x++) {
			err=egg=ebb=0;
			sr_x=sg_x=sb_x=0;
			sr_y=sg_y=sb_y=0;
			ff=0;
			for(yy=-1;yy<=1;yy++) {
				for(xx=-1;xx<=1;xx++) {

					val = getPixel(img,x+xx,y+yy,&col);	得

					err-=col.r*fil[ff];
					egg-=col.g*fil[ff];
					ebb-=col.b*fil[ff];


					sr_x+= col.r*sobel1[ff];
					sg_x+= col.g*sobel1[ff];
					sb_x+= col.b*sobel1[ff];
					sr_y+= col.r*sobel2[ff];
					sg_y+= col.g*sobel2[ff];
					sb_y+= col.b*sobel2[ff];

					ff++;
				}
			}

			val = getPixel(buf,x,y,&col);	
			r1=col.r;
			g1=col.g;
			b1=col.b;

			err=err*st/100+(int)sqrt(sr_x*sr_x+sr_y*sr_y)*st2/100;
			egg=egg*st/100+(int)sqrt(sg_x*sg_x+sg_y*sg_y)*st2/100;
			ebb=ebb*st/100+(int)sqrt(sb_x*sb_x+sb_y*sb_y)*st2/100;
			rr=getVal(err,(int)col.r,con);
			gg=getVal(egg,(int)col.g,con);
			bb=getVal(ebb,(int)col.b,con);
			col.r = rr;
			col.g = gg;
			col.b = bb;
			setPixel(buf,x,y,&col);	// バッファに値をセットする
		}
	}

	for(y=y1;y<=y2;y++) {
		for(x=x1;x<=x2;x++) {
			err=egg=ebb=0;
			ff=0;
			for(yy=-1;yy<=1;yy++) {
				for(xx=-1;xx<=1;xx++) {
					val = getPixel(buf,x+xx,y+yy,&col);	得

					err+=col.r*smooth[ff];
					egg+=col.g*smooth[ff];
					ebb+=col.b*smooth[ff];

					ff++;
				}
			}
			col.r = err/sum;
			col.g = egg/sum;
			col.b = ebb/sum;
			setPixel(outimg,x,y,&col);	
		}
	}
	disposeImage(buf);
	return TRUE;
}
Esempio n. 14
0
File: Image.cpp Progetto: s50/mona
 Image::~Image()
 {
     disposeImage();
 }
Esempio n. 15
0
bool KHTMLImage::closeUrl()
{
    disposeImage();
    return m_khtml->closeUrl();
}
Esempio n. 16
0
ImageLoaderFreeImage::~ImageLoaderFreeImage()
{
    disposeImage();
}