Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

Zooming в TImage   Найти похожие ветки 

 
Baky   (2002-11-24 16:03) [0]

как делать зуминг к Image


 
dim- ©   (2002-11-25 09:41) [1]

в Image делаешь растягивание и меняешь его размер


 
Дмитрий К.К. ©   (2002-11-25 09:49) [2]

Качество потеряешь в любом случае.


 
[NIKEL] ©   (2002-11-25 11:17) [3]

методом билинейной интерполяции можно получть хорошее качество
вырезки из проекта:

int Bilinear(BYTE Image[][256], float i, float j)
{
int x1, y1, x2, y2;
float Gray;

x1 = (int)floor(i);
x2 = x1+1;
y1 = (int)floor(j);
y2 = y1+1;
Gray = (y2-j)*(x2-i)*Image[x1][y1] + (y2-j)*(i-x1)*Image[x2][y1]
+ (j-y1)*(x2-i)*Image[x1][y2] + (j-y1)*(i-x1)*Image[x2][y2];
return INT(Gray);
}
//-------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
BYTE ImageData[256][256], *LinePtr;
BYTE Output[256][256];
int x, y;
float i, j, zoom=4.0;
int x0=127, y0=127; //куда масштабируем

// копируем в Bitmap
for (y=0; y<=255; y++)
{
LinePtr = (BYTE *) Image1->Picture->Bitmap->ScanLine[y];
for (x=0; x<=255; x++)
ImageData[x][y] = LinePtr[x];
}
// подсчитываем получившееся изображение
for (y=0; y<=255; y++)
for (x=0; x<=255; x++)
{
i = (x+(zoom-1)*x0) / zoom;
j = (y+(zoom-1)*y0) / zoom;
Output[x][y] = Bilinear(ImageData, i, j);
}
// копируем обратно
for (y=0; y<=255; y++)
{
LinePtr = (BYTE *) Image1->Picture->Bitmap->ScanLine[y];
for (x=0; x<=255; x++)
LinePtr[x] = Output[x][y];
}
Image1->Refresh();
}



Страницы: 1 вся ветка

Текущий архив: 2002.12.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
4-14864
dimod
2002-10-21 12:49
2002.12.05
WindowProc - обработка сообщений окна


1-14661
Lola
2002-11-25 10:06
2002.12.05
Проверка орфографии в TМемо.


14-14731
The_Vizit0r!
2002-11-12 21:48
2002.12.05
Виртуальная битва


3-14364
Calm
2002-11-19 13:30
2002.12.05
MS SQL - уведомление внешнего приложения


1-14647
sashok
2002-11-24 16:07
2002.12.05
Цвет в CheckListBox