Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition > Программирование

Программирование Вопросы связанные с программированием в JAVA

Ответ
 
Опции темы
Старый 19.08.2011, 21:30   #1
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Помогите создать библиотеку

Доброго дня.

Решил написать на ява одну библиотеку но из-за полного отсутствия опыта застопорился в самом начале.

В общем идея такая:

Есть изображение и его альфа канал (индексированная монохромная пикча). С помощью библиотеки эти 2 изображения совмещаются и получается 1 изображение с альфа каналом. Типа png24, но весит в разы меньше.

Если бы МП умел работать с изображениями, я бы делал так:

function CreateAlpha (im1,im2:image):image
begin

for i:=1 to GetImageHeith (im2) do
for j:=1 to GetImageWidth (im2) do
ImageAlpha(im1,j,i):=ImageRed(im2,j,i);

CreateAlpha:=im1;
end;
Но мидлет паскаль не умеет работать с каналами изображений.

Может, кто-то поможет мне перевести это в *.java?
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Старый 22.08.2011, 21:29   #2
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Помогите создать библиотеку

Запросы для написания библиотек обычно дают в теме "Запросы на написание библиотек". Ну и ладно.

Библиотека:
import javax.microedition.lcdui.Image;
public class Lib_alphamage
{
	public static String version() { return "1.0"; }
	public static Image combine(Image rgb, Image a)
	{
		int w = rgb.getWidth(), h = rgb.getHeight(), l = w * h;
		int r[] = new int[l], o[] = new int[l];
		rgb.getRGB(r, 0, w, 0, 0, w, h);
		a.getRGB(o, 0, w, 0, 0, w, h);
		int i;
		for (i = 0; i < l; i++)
		{
			r[i] = (r[i] & 0xFFFFFF) | ((o[i] & 0xFF) << 24);
		}
		return Image.createRGBImage(r, w, h, true);
	}
	public static Image copy(Image src, int x, int y, int w, int h, int t)
	{
		return Image.createImage(src, x, y, w, h, t);
	}
}
Тест:
program teest;
uses alphaMage;
var i1, i2, i3: image;
i: integer;
begin
  setColor(0, 64, 192);
  fillRect(0, 0, getWidth, getHeight);
  i1 := loadImage('/i1.png');
  i2 := loadImage('/i2.png');
  i3 := alphaMage.combine(i1, i2);
  i := getImageHeight(i1);
  drawImage(i1, 0, 0);
  drawImage(i2, 0, i);
  drawImage(i3, 0, i*2);
  rePaint;
  delay(10000);
end.
Скриншот с теста:


Примечания:
1. Поскольку использован простой алгоритм, попытка совместить изображения разных размеров скорее всего завершится крахом программы.
2. По причине подобной примечанию 1, во внимание берется лишь синий канал изображения-альфа-маски.
3. Для опережения потенциального следующего вопроса, включена функция .copy(image, top, left, width, height, transform). Стандартный метод получения изображения из изображения в MP не берет во внимание alpha-канал вовсе.

Дополнительно:
1. Документация по Java ME (CLDC 1.1): http://java.sun.com/javame/reference...w-summary.html
2. Возможно порой стоит клацать кнопку "Полезно!" вместо\помимо написания сообщения с такой же целью?
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо YellowAfterlife за это полезное сообщение:
PassCall (23.08.2011), Romanzes (24.08.2011)
Старый 23.08.2011, 12:13   #3
PassCall
Разработчик
 
Аватар для PassCall
 
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений
(для 319 пользователей)
Ответ: Помогите создать библиотеку

"alphaMage" зачетное название =)

"запросы для написания библиотек обычно дают в теме "Запросы на написание библиотек"."
1. Я туда уже писал. Ноль эмоций.
2. Хотелось бы увидеть сам код, а не готовый класс. Вот я его и увидел =)
__________________
Мечта программиста: запрограммировать процесс программирования.

Всё гениальное - просто.

http://passcall.ucoz.com
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 20:47.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com