Вниз  Java-программирование (1-ые посты)
- 31.07.2013 / 18:27
Magatino
  Администратор

Magatino 
Сейчас: Offline
vl@volk, 2.5D , для шутера спрашиваю :gg:
- 31.07.2013 / 18:27
gost6678
  Пользователь

gost6678 
TIMUR, воспользуйся методом масштабирования: http://annimon.com/code/?act=view&id=2653

Изменено gost6678 (31.07 / 18:28) (всего 1 раз)
- 31.07.2013 / 18:29
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
TIMUR,
  1. /**
  2.  * изменяет масштаб картинки
  3.  * @param img картинка
  4.  * @param newWidth новая ширина
  5.  * @param newHeight новая высота
  6.  * @return отмасштабированная картинка
  7.  */
  8. public static Image resize(Image img, int newWidth, int newHeight)
  9. {
  10.     int imageWidth = img.getWidth();
  11.     int imageHeight = img.getHeight();
  12.     if (newWidth < 0 && newHeight > 0)
  13.         newWidth = imageWidth * newHeight / imageHeight;
  14.     else if (newWidth > 0 && newHeight < 0)
  15.         newHeight = imageHeight * newWidth / imageWidth;
  16.     else if (newWidth < 0 && newHeight < 0)
  17.         throw new IllegalArgumentException("Negative width and height");
  18.     int[] arrayOld = new int[imageWidth * imageHeight];
  19.     int[] arrayNew = new int[newWidth * newHeight];
  20.     img.getRGB(arrayOld, 0, imageWidth, 0, 0, imageWidth, imageHeight);
  21.     for (int y = 0; y < newHeight; y++)
  22.         for (int x = 0; x < newWidth; x++)
  23.             arrayNew[x + newWidth * y] = arrayOld[x * imageWidth / newWidth + imageWidth * (y * imageHeight / newHeight)];
  24.     return Image.createRGBImage(arrayNew, newWidth, newHeight, true);
  25. }

__________________
 знает толк
- 31.07.2013 / 18:31
gost6678
  Пользователь

gost6678 
vl@volk, можно и так. :)
- 31.07.2013 / 21:32
Misha
  Пользователь

Misha 
Сейчас: Offline
TIMUR, я пользуюсь этим:
Открыть спойлер
например - Image Img = resize_image(OldImg,50,50);
- 31.07.2013 / 23:17
NaruTrey
  Пользователь

NaruTrey 
Сейчас: Offline
А я вообще использовал бикубическую интерполяцию, тырнул код с UniFM.
__________________
 Чёрные усы кричает этот свисть
- 1.08.2013 / 07:46
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
NaruTrey, и зачем?
Вот вам самые известные методы изменения размера картинки http://annimon.com/download/index.php?act=view&id=393
__________________
 let live
- 1.08.2013 / 13:20
DominaN
  Пользователь

DominaN 
Сейчас: Offline
  1. public final static Image resizeImage(Image img, int w2, int h2) {
  2.     int w = img.getWidth(), h = img.getHeight();
  3.  
  4.     if (w == w2 && h == h2) return img;
  5.  
  6.     int[] pixels = new int[w * h], temp = new int[w2 * h2];
  7.     img.getRGB(pixels, 0, w, 0, 0, w, h);
  8.  
  9.     int a, b, c, d, x, y, index;
  10.     float x_ratio = ((float) (w - 1)) / w2;
  11.     float y_ratio = ((float) (h - 1)) / h2;
  12.     float x_diff, y_diff, blue, red, green, alpha;
  13.     int offset = 0;
  14.  
  15.     for (int i = 0; i < h2; i++) {
  16.         for (int j = 0; j < w2; j++) {
  17.             x = (int) (x_ratio * j);
  18.             y = (int) (y_ratio * i);
  19.             x_diff = (x_ratio * j) - x;
  20.             y_diff = (y_ratio * i) - y;
  21.             index = (y * w + x);
  22.  
  23.             a = pixels[index];
  24.             b = pixels[index + 1];
  25.             c = pixels[index + w];
  26.             d = pixels[index + w + 1];
  27.  
  28.             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);
  29.             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);
  30.             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);
  31.             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);
  32.  
  33.             temp[offset++] = ((int) blue) | (((int) green) << 8) | ((((int) red) << 16) | (((int) alpha) << 24));
  34.         }
  35.     }
  36.  
  37.     return Image.createRGBImage(temp, w2, h2, true);
  38. }
  :)
- 1.08.2013 / 13:42
Shaman719
  Пользователь

Shaman719 
Сейчас: Offline
Что неправильно в этом коде?

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
public class HelloWorld extends MIDlet
{
public HelloWorld()
{
super();
public void destroyApp(boolean destroy)
form = null;
notifyDestroyed();
}
public void pauseApp()
}
public void sartApp()
form = new Form(."Hello,World");
String msg = "My first MIDlet";
form.append(msg);
display = Display.getDisplay(this);
display.setCurrent(form);
}
}
- 1.08.2013 / 14:40
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
Shaman719, пиши длинный код вот так, а лучше в файле отправляй:
[spоiler][cоde=java]КОД ТУТ[/code][/spoiler]

  1. public void pauseApp() {}
  2. public void startApp() {
  3. form = new Form("Hello,World");
Попробуй с этим сверится.

Изменено mrEDitor (1.08 / 14:41) (всего 3 раза)
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)