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); }
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; }
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); }
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; }
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); }
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); }
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 ); }
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; }
Image::~Image() { disposeImage(); }
bool KHTMLImage::closeUrl() { disposeImage(); return m_khtml->closeUrl(); }
ImageLoaderFreeImage::~ImageLoaderFreeImage() { disposeImage(); }