Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c