YellowAfterlife |
19.03.2011 14:11 |
Lib_snap - фотографирование
Вложений: 1
Итак, эта нехитрая библиотека позволяет вам получать изображение с камеры телефона, в указанном формате, качестве, и размере.
Достаточно полезная штука, если вы желаете написать редактор изображений, или просто игру где можно использовать фотографии.
Всего в библиотеке 5 функций. Одна для инициализации, одна собственно для фотографирования, и 3 для того чтобы выяснять, работает ли программа или почему она не работает. При этом библиотека никогда не вызовет краха самой игры.
В вложении - папка проэкта библиотеки, в которой можно найти саму библиотеку (Lib_snap.class) и умеренно откоментированный пример программы на ней.
Документация:
Код:
Lib_snap
by YellowAfterlife
Документация
SnapInit() - Инициализировать библиотеку. Вызывать в начале программы.
SnapAvaible():Integer (0\1) - Возращает, доступна ли камера устройства.
Предполагаемое использование - закрывать программу если нет камеры.
SnapGet(Params:String):Image - Делает фотографию с задаными параметрами.
Если строка параметров пустая, будут использованы параметры устройства
по умолчанию (не очень хорошая идея). Иначе, формат строки параметров:
encoding=#type&quality=#level&width=#w&height=#h
#type - кодирование (jpeg\bmp\png, jpeg работает чаще всего)
#level - качество (0..100) для JPEG
#w - ширина изображения.
#h - высота изображения.
Пример: 'encoding=jpeg&quality=100&width=240&height=320'
Означает: JPEG кодирование, 100% качество, 240x320
SnapWorks():Integer - Возращает результат работы SnapGet
0 - функция еще не вызывалась
-1 - функция сработала (получено изображение)
1 - обычная ошибка, используйте SnapError чтобы узнать о ней больше
2 - ошибка состояния, формат не поддерживается или забыта инициализация.
3 - ошибка безопасности - пользователь не разрешил фотографировать.
SnapError():String - возращает текст ошибки или ее название.
Исходный код библиотеки:
Он может показатся немного странным, но это изза очень тщательного слежения за ошибками.
PHP код:
import javax.microedition.media.Manager; import javax.microedition.media.Player; import javax.microedition.media.control.VideoControl; import javax.microedition.lcdui.Image; import java.lang.IllegalStateException; import java.lang.SecurityException; public class Lib_snap { public static Player _lsp; public static VideoControl _lsv; public static int _lsw = 0; public static int _lsc = 0; public static String _lse; public static void snapinit() { try { _lsp = Manager.createPlayer("capture://image"); _lsp.realize(); _lsv = (VideoControl)_lsp.getControl("VideoControl"); _lsv.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null); _lsw = ((_lsv != null) ? 1 : 0); _lsp.start(); } catch (Exception e) { _lsw = 0; } } public static Image snapget(String s) { try { byte[] r = _lsv.getSnapshot(s == "" ? null : s); _lsc = -1; _lse = null; Image i = Image.createImage(r, 0, r.length); return i; } catch (IllegalStateException e) { _lsc = 2; _lse = e.getMessage(); if (_lse == null) _lse = e.toString(); return null; } catch (SecurityException e) { _lsc = 3; _lse = e.getMessage(); if (_lse == null) _lse = e.toString(); return null; } catch (Throwable e) { _lse = e.getMessage(); if (_lse == null) _lse = e.toString(); _lsc = 1; return null; } } public static int snapworks() { return _lsc; } public static int snapavaible() { return _lsw; } public static String snaperror() { return _lse; } }
|