Programlama | Programlama Dilleri | C Programlama Dili |C++

Hata
  • XML Parsing Error at 1:82. Error 9: Invalid character


Resim Ölçekleme

AÇIKLAMA

Bmp resimleri ölçekler. Baz? renkli resimlerde renk kayb? olabilir. Amaç ölçekleme i?lemini küçültme ve büyültme ?eklinde yapan basit örnek bir fonksiyonu sunmakt?r.

 

  1.  
  2.  
  3. //---------------------------------------------------------------------------
  4.  
  5. #include <vcl.h>
  6. #pragma hdrstop
  7. using namespace std;
  8. #include <math.h>
  9.  
  10.  
  11. #include "Unit1.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma resource "*.dfm"
  15. #include <FileCtrl.hpp>
  16. TForm1 *Form1;
  17. double **data;
  18. int en,boy;
  19.  
  20. //---------------------------------------------------------------------------
  21. void De_Malloc(double **&dizim,int eni,int boyu)
  22. {
  23.    for (int i=0;i<eni;i++)
  24.        delete []dizim[i];
  25.      delete[] dizim;
  26.    return;
  27. }
  28. //---------------------------------------------------------------------------
  29. void De_Malloc(byte **&dizim,int eni,int boyu)
  30. {
  31.    for (int i=0;i<eni;i++)
  32.        delete []dizim[i];
  33.      delete[] dizim;
  34.    return;
  35. }
  36. //---------------------------------------------------------------------------
  37. void byteMalloc(byte **&imge,int w,int h)
  38. {
  39.   imge=new byte *[w];
  40.   for(int i=0;i<w;i++)imge[i]=new byte[h];
  41.   for(int i=0;i<w;i++)
  42.   for(int j=0;j<h;j++)
  43.   imge[i][j]=0;
  44.   return;
  45. }
  46. //---------------------------------------------------------------------------
  47. void doubleMalloc(double **&imge,int w,int h)
  48. {
  49.   imge=new double *[w];
  50.   for(int i=0;i<w;i++)imge[i]=new double[h];
  51.   for(int i=0;i<w;i++)
  52.   for(int j=0;j<h;j++)
  53.   imge[i][j]=0;
  54.   return;
  55. }
  56. //---------------------------------------------------------------------------
  57.  
  58. void olcekle(double **&imge,int imw,int imh,int w,int h)
  59. {
  60.   double **ara;
  61.     doubleMalloc(ara,w,imh);
  62.    double oran,artim;
  63.  
  64.   if(imw<w)
  65.   {
  66.     oran=(w-1)/(double)(imw-1);
  67.     for(int y=0;y<imh-1;y++)
  68.     { for(int x=0;x<(imw-1);x++)
  69.       {
  70.         artim=(imge[x+1][y]-imge[x][y])/oran;
  71.         int kk=oran*x;
  72.         for(int i=0;i<oran;i++)
  73.          ara[i+kk][y]=(imge[x][y]+i*artim);
  74.       }
  75.   }
  76.    }
  77.   else if(imw>w)
  78.   {
  79.     oran=(imw)/(double)(w);
  80.     for(int y=0;y<imh-1;y++)
  81.     { for(int x=0;x<w;x++)
  82.       {
  83.         int kk=oran*x;double top=0;
  84.         for(int i=0;i<oran;i++)
  85.          top+=imge[i+kk][y];
  86.          ara[x][y]=(top/floor(oran));
  87.       }
  88.   }
  89.  
  90.   }
  91.   else
  92.     for(int y=0;y<imh;y++)
  93.        for(int x=0;x<w;x++)
  94.         ara[x][y]=imge[x][y];
  95.   for(int y=0;y<imh;y++) ara[w-1][y]=imge[imw-1][y];
  96.  
  97.   De_Malloc(imge,imw,imh);
  98.   doubleMalloc(imge,w,h);
  99.  
  100.   if(imh<h)
  101.   {
  102.     oran=(h)/(double)(imh);
  103.     for(int x=0;x<w;x++)
  104.     { imge[x][h-1]=ara[x][imh-1];
  105.       for(int y=0;y<(imh-1);y++)
  106.       {
  107.         artim=(ara[x][y+1]-ara[x][y])/oran;
  108.         int kk=oran*y;
  109.         for(int i=0;i<oran;i++)
  110.          imge[x][i+kk]=(ara[x][y]+i*artim);
  111.       }
  112.    }
  113.  
  114.   }
  115.   else if(imh>h)
  116.   {
  117.     oran=(imh-1)/(double)(h-1);
  118.     for(int x=0;x<w;x++)
  119.     { imge[x][h-1]=ara[x][imh-1];
  120.       for(int y=0;y<h;y++)
  121.       {
  122.         int kk=oran*y;double top=0;
  123.         for(int i=0;i<oran;i++)
  124.           top+=ara[x][i+kk];
  125.         imge[x][y]=(top/floor(oran));
  126.       }
  127.   }
  128.   }
  129.    else
  130.     for(int y=0;y<h;y++)
  131.        for(int x=0;x<imw;x++)
  132.         imge[x][y]=(byte)ara[x][y];
  133.   for(int x=0;x<w;x++) imge[x][h-1]=ara[x][imh-1];
  134.   De_Malloc(ara,w,imh);
  135.   return;
  136. }
  137. //---------------------------------------------------------------------------
  138. __fastcall TForm1::TForm1(TComponent* Owner)
  139.         : TForm(Owner)
  140. {
  141. }
  142. //---------------------------------------------------------------------------
  143.  
  144. void __fastcall TForm1::Button1Click(TObject *Sender)
  145. {
  146.   OpenPictureDialog1->Execute();
  147.   double **data;
  148.  
  149.   Graphics::TBitmap *bmp = new Graphics::TBitmap;
  150.   bmp->LoadFromFile(OpenPictureDialog1->FileName);
  151.   en = bmp->Width;
  152.   boy = bmp->Height;
  153.   byte *ptr;
  154.   bmp->PixelFormat=pf24bit;
  155.  
  156.   doubleMalloc(data,en,boy);
  157.  
  158.   for (int y = 0; y < (bmp->Height); y++)
  159.       {
  160.          ptr = (Byte *)bmp->ScanLine[y];
  161.          for (int x = 0; x < (bmp->Width); x++)
  162.           data[x][y]=(11*ptr[3*x]+59*ptr[3*x+1]+30*ptr[3*x+2])/100;
  163.       }
  164.     Image1->Picture->Bitmap=bmp;
  165.  
  166.     int w=Edit1->Text.ToInt(); int h=Edit2->Text.ToInt();
  167.  
  168.  
  169.   olcekle(data,en,boy,w,h);
  170.   bmp->Width=w;bmp->Height=h;
  171.   bmp->PixelFormat=pf24bit;
  172.   for (int y = 0; y < (bmp->Height); y++)
  173.       {
  174.          ptr = (Byte *)bmp->ScanLine[y];
  175.          for (int x = 0; x < (bmp->Width); x++)
  176.           ptr[3*x]=ptr[3*x+1]=ptr[3*x+2]=(byte)data[x][y];
  177.      }
  178.   Image2->Left=Image1->Left+Image1->Width+20;  
  179.   Image2->Picture->Bitmap=bmp;
  180.  
  181. }
  182. //---------------------------------------------------------------------------
  183. void __fastcall TForm1::Kaydet1Click(TObject *Sender)
  184. {
  185.   SavePictureDialog1->Execute();
  186.   Image2->Picture->SaveToFile(SavePictureDialog1->FileName.c_str());
  187. }
  188. //---------------------------------------------------------------------------
  189.  
  190.  

 

 

 

Dictionary
x
+
?
Null.
Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Pazartesi, 29 Ağustos 2011 17:54 )  
404 Not Found

404

Not Found

The resource requested could not be found on this server!


Proudly powered by LiteSpeed Web Server

Please be advised that LiteSpeed Technologies Inc. is not a web hosting company and, as such, has no control over content found on this site.