14.12.2012 / 20:23 | |
Magatino Администратор Сейчас: Offline
Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
| Andrey, А что тебе мешает придумать формулу и вставить в этот код? |
14.12.2012 / 20:24 | |
ckrocket Пользователь Сейчас: Offline
Имя: Miha Откуда: Петербург Регистрация: 31.05.2012
| GIPERT, на твой пост ( 14.12.2012 / 20:10) отвечу, mp3 - сжатый формат. его лучше не использовать. но если хочешь, либо используй доп. либу, либо смотри структуру формата |
15.12.2012 / 22:40 | |
[Rutar] Пользователь Сейчас: Offline
Имя: Andriy Откуда: Львів Регистрация: 18.07.2011
| Всем привет Вот хочу спросить или есть у кого-то код билинейной интерполяции Тот что здесь (не UniFM) не совсем работает При масштабировании картинки последние пиксели справа и снизу просто ищезают Бикубическая интерполяция хорошая, но очень медленая |
16.12.2012 / 12:02 | |
DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| public static Image resampleImage(Image img, int w2, int h2) {
int w = img.getWidth(), h = img.getHeight();
if (w == w2 && h == h2) {
return img;
}
int[] pixels = new int[w * h], temp = new int[w2 * h2];
img.getRGB(pixels, 0, w, 0, 0, w, h);
int a, b, c, d, x, y, index;
float x_ratio = ((float) (w - 1)) / w2;
float y_ratio = ((float) (h - 1)) / h2;
float x_diff, y_diff, blue, red, green, alpha;
int offset = 0;
for (int i = 0; i < h2; i++) {
for (int j = 0; j < w2; j++) {
x = (int) (x_ratio * j);
y = (int) (y_ratio * i);
x_diff = (x_ratio * j) - x;
y_diff = (y_ratio * i) - y;
index = (y * w + x);
a = pixels[index];
b = pixels[index + 1];
c = pixels[index + w];
d = pixels[index + w + 1];
alpha = ((a >> 24) & 0xff) * (1 - x_diff) * (1 - y_diff) + ((b >> 24) & 0xff) * (x_diff) * (1 - y_diff) + ((c >> 24) & 0xff) * (y_diff) * (1 - x_diff) + ((d >> 24) & 0xff) * (x_diff * y_diff);
blue = (a & 0xff) * (1 - x_diff) * (1 - y_diff) + (b & 0xff) * (x_diff) * (1 - y_diff) + (c & 0xff) * (y_diff) * (1 - x_diff) + (d & 0xff) * (x_diff * y_diff);
green = ((a >> 8) & 0xff) * (1 - x_diff) * (1 - y_diff) + ((b >> 8) & 0xff) * (x_diff) * (1 - y_diff) + ((c >> 8) & 0xff) * (y_diff) * (1 - x_diff) + ((d >> 8) & 0xff) * (x_diff * y_diff);
red = ((a >> 16) & 0xff) * (1 - x_diff) * (1 - y_diff) + ((b >> 16) & 0xff) * (x_diff) * (1 - y_diff) + ((c >> 16) & 0xff) * (y_diff) * (1 - x_diff) + ((d >> 16) & 0xff) * (x_diff * y_diff);
temp[offset++] = ((int) blue) | (((int) green) << 8) | ((((int) red) << 16) | (((int) alpha) << 24));
}
}
return Image.createRGBImage(temp, w2, h2, true);
}
|
20.12.2012 / 19:28 | |
RooMeN Пользователь Сейчас: Offline
Откуда: Нижний Новгород Регистрация: 18.01.2010
| Как вращать точку по окружности по постоянному радиусу?
|
20.12.2012 / 20:09 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| RooMeN, на опререлённый угол? Или в зависимости от координаты x?
|
20.12.2012 / 20:17 | |
ckrocket Пользователь Сейчас: Offline
Имя: Miha Откуда: Петербург Регистрация: 31.05.2012
| RooMeN, формула: newX = x * cos ( theta ) - y * sin ( theta );
newY = y * cos ( theta ) + x * sin ( theta );
Изменено ckrocket (20.12 / 20:18) (всего 1 раз) |
20.12.2012 / 21:44 | |
RooMeN Пользователь Сейчас: Offline
Откуда: Нижний Новгород Регистрация: 18.01.2010
| ckrocket, спасибо а синус и косинус откуда загружать? |
20.12.2012 / 21:48 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| RooMeN, Math.sin
|
20.12.2012 / 21:50 | |
myname Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| RooMeN, не загружать, а импортировать. import java.lang.Math;
|