Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2010, 15:32   #1
i-cpp
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 33
Вопрос devil, iluImageParameter

в регультате загрузки файла с картинкой и его сжатия, он становится хуже качеством, появляются "ступеньки" ). Фильтры при этом почему-то не работают. Подскажите что не так.

Код:
LPTEXINFO CRenderer::LoadPhoto2 ( const char *pName, int w, int h )
{

	LPTEXINFO tex = 0;
	//.... OpenIL
	ILuint img = ilGenImage ();
	ilBindImage ( img );

	//ilLoad( IL_TYPE_UNKNOWN, pName );
	ilLoadImage( pName );
	
	int err = ilGetError();
	if ( err == IL_NO_ERROR )
	{
		ILint width = ilGetInteger( IL_IMAGE_WIDTH );
		ILint height = ilGetInteger( IL_IMAGE_HEIGHT );

		POINT offs = {0,0};
		
		if ( height * w / width >= h )
		{
			width = w;
			height = height * w / width ;

			offs.y = ( height - h ) / 2;
		}
		else if ( width * h / height >= w )
		{

			width = width * h / height ;
			height = h;

			offs.x = ( width - w ) / 2;
		}

		//height = 768/2;
		//width = 1024;
		iluImageParameter ( ILU_FILTER, ILU_SCALE_MITCHELL );
		iluScale ( width, height, 1 );	

		//iluCrop( offs.x, offs.y, 0, width, height, 1 );

		int depth = ilGetInteger( IL_IMAGE_DEPTH );
		int ilFormat = ilGetInteger( IL_IMAGE_FORMAT );
		int ilType = ilGetInteger( IL_IMAGE_TYPE );
		int sz_of_data = w * h * 4;//ilGetInteger( IL_IMAGE_SIZE_OF_DATA );
		 

		// Получение растровых данных
		
		void* data = new char [ sz_of_data ];
		int err = ilCopyPixels( offs.x, offs.y, 0, w, h, depth, IL_RGBA, IL_UNSIGNED_BYTE, data);

		tex = Load ( w, h, (COLOR*)data );
		delete[] data;
		
	}
	else
	{
		const char* strError = iluErrorString(err);
		MessageBox(NULL, va( "Ошибка (%s) при загрузке файла %s ", strError, pName), "Ошибка загрузки", MB_OK);
	}
	ilDeleteImage ( img );
	return tex;
}
i-cpp вне форума Ответить с цитированием
Старый 26.04.2010, 16:23   #2
i-cpp
Пользователь
 
Регистрация: 05.12.2009
Сообщений: 33
По умолчанию

это конечно не сильно умный способ, но мне более менее помог iluBlurGaussian(10);
i-cpp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
devil mouse Drive Общие вопросы C/C++ 2 01.12.2008 23:25