Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вращение картинки 
:(
    Опции темы
javastic
Дата 25.9.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



К теме вращения картинок. 

Выкладываю готовый класс, в котором реализованы методы вращения и изменения размеров изображений.

Надеюсь, кому-то это сэкономит время.

Код

/**
 * This class contains methods, what may rotate and scale images.
 * Cos and sin got from Midp 2.0
 * 
 */


public class Translator {

    /**
     * Rotate source image and return rotated.
     * 
     * @param argb_source source image
     * @param argb_rotated rotated image
     * @param alpha angle for rotate
     * @param imageWidth - width of image
     * @param imageHeight - height of image     
     */
    public static void rotateImage(int[] argb_source, int[] argb_rotated, int alpha, int imageWidth, int imageHeight) {

        int x0, y0, x1, y1;
        long sn =(long)( Math.sin( Math.toRadians( alpha ))* 10000); 
        long cs = (long)( Math.cos( Math.toRadians( alpha ))* 10000);
        int xc = imageWidth / 2;
        int yc = imageHeight / 2;

        for (y1 = 0; y1 < imageHeight; y1++) {

            for (x1 = 0; x1 < imageWidth; x1++) {

                // На  всякий случай заполняем  картинку цветом фона
                int bgcol = 0;
                argb_rotated [ y1 * imageWidth + x1 ] = bgcol;
                x0 = ( int ) ( ( cs * ( x1 - xc ) + sn * ( y1 - yc ) ) / 10000 + xc );
                y0 = ( int ) ( - ( sn * ( x1 - xc ) - cs * ( y1 - yc ) ) / 10000 + yc );
                // Проверяем, не  выходит ли точка  за пределы области
                if ( x0 > -1 )
                    if ( x0 < imageWidth)
                        if ( y0 > -1 )
                            if ( y0 < imageHeight ) { // Закрашиваем  точку
                                argb_rotated[ y1 * imageWidth + x1 ] = argb_source[ y0 * imageWidth + x0 ];
                            }

            }

        }
        
    }
    
/**
 * Scale source image. 
 * 
 * Scaled image has same width and height as source, but contents is scaled.
 * If you want grows image, set lambda > 1, else set lambda < 1
 * 
 * @param argb_source - given image for scale
 * @param argb_scaled - result scaled image
 * @param lambda - coefficient of scale
 * @param imageWidth - width of image
 * @param imageHeight - height of image
 */
    public static void scaleImage(int[] argb_source, int[] argb_scaled, double lambda, int imageWidth, int imageHeight) {

        int x0, y0, x1, y1;

        for (y1 = 0; y1 < imageHeight; y1++) {

            for (x1 = 0; x1 < imageWidth; x1++) {

                int bgcol = 0;
                argb_scaled [ y1 * imageWidth + x1 ] = bgcol;
                x0 = ( int ) (x1 / lambda);
                y0 = ( int ) (y1 / lambda);
                
                if ( x0 > -1 )
                    if ( x0 < imageWidth )
                        if ( y0 > -1 )
                            if ( y0 < imageHeight ) { 
                                
                                argb_scaled[ y1 * imageWidth + x1 ] = argb_source[ y0 * imageWidth + x0 ];
                                
                            }
            }

        }
        
    }

    
}


Автор: GhostMasterNet Источник: Vingrad


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
nerezus
Дата 25.9.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



эм... я бегло просмотрел код и не заметил тут смешивание цветов.

P.S. не в тот раздел


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
zkv
Дата 25.9.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 92



и лучше в исходники, наверное
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.