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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Печать 
:(
    Опции темы
VOS
Дата 27.2.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 6
Всего: 8



У меня возникла необходимость реализовать печать с мобильного телефона. 
Желательна поддержка печати изображений.
Кто-нибудь занимался этой проблемой?

PM MAIL   Вверх
Dancer
Дата 27.2.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



1. как происходит процесс передачи информации до принтера?
2. Что нужно (какое изображение) нужно печатать? (берётся с камеры или то, что нарисовано в какой-то момент на экране)



--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
VOS
Дата 27.2.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 6
Всего: 8



1) Необходимо в зависимости от настроек поддерживать связь с принтером через Bluetooth, IR или сериал
    Т.е. придется изобретать некий базовый класс, куда передавать способ связи с железякой.

2) Надо печатать содержимое DataGrid + текстовый заголовок + логотип (штрих код) или типа того.


PM MAIL   Вверх
Dancer
Дата 27.2.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



при прямой связи с принтером это организовать сложно..... (фактически нужно реализовать драйвер принтера в приложении)

можно как вариант связываться с компом на котором крутиться определённое приложение (проще всего HTTP, возможно другие способы связи), которому приходит RAW картинка, то есть массив целочисленных значений и размер картинки (ширина, высота). Каждое целое значение это цвет пикселя этой картинки. Далее приложение на компе делает Image и уже его печатает.
Массив целочисленных значений получаем из imageObject.getRGB().

Как реализован у тебя DataGrid я не смотрел. Но если ты всё рисуешь на одной большой картике.... (по памяти сильно затратно, хотя скорее всего от этого никуда не денешься), то смело получаешь массив (если Heap не закончится) и шлёшь это дело на обработку на комп.

В первом приближении, как то так. (ИМХО)


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
VOS
Дата 27.2.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 6
Всего: 8



Спасибо за ответ.
Рисую не на большой картинке.
Компьютер участвовать не должен, там все понятно как реализовывать,  данные перегнать как-нибудь, а с него уже печатать как хочешь.

Нашел статью как перегонять Image (построчно) в нечто типа Tiff, останется только добавить управляющие команды для принтера.
Вообщем если получится что-нибудь приличное, выложу.

И вот еще, может кому пригодится, функция для растяжения/сжатия изображений:
Код

    /**Растягивает/сжимает изображение 
     * @param src - исходное изображение
     * @param dstWidth  ширина нового изображения 
     * @param dstHeight  высота нового изображения
     * @return  полученное изображение   
     * */
 private Image resizeImage(Image src, int dstWidth,int dstHeight) {
          int srcWidth = src.getWidth();
          int srcHeight = src.getHeight();
          Image tmp = Image.createImage(dstWidth, srcHeight);
          Graphics g = tmp.getGraphics();
          int ratio = (srcWidth << 16) / dstWidth;
          int pos = ratio/2;


          for (int x = 0; x < dstWidth; x++) {
              g.setClip(x, 0, 1, srcHeight);
              g.drawImage(src, x - (pos >> 16), 0, Graphics.LEFT | Graphics.TOP);
              pos += ratio;
          }

          Image resizedImage = Image.createImage(dstWidth, dstHeight);
          g = resizedImage.getGraphics();
          ratio = (srcHeight << 16) / dstHeight;
          pos = ratio/2;


          for (int y = 0; y < dstHeight; y++) {
              g.setClip(0, y, dstWidth, 1);
              g.drawImage(tmp, 0, y - (pos >> 16), Graphics.LEFT | Graphics.TOP);
              pos += ratio;
          }
          return resizedImage;

      }


Пример использования:
Код

 g.drawImage(resizeImage(img,getWidth(),getHeight()),getWidth() / 2, 0,17);


Это сообщение отредактировал(а) VOS - 27.2.2007, 19:37
PM MAIL   Вверх
VOS
Дата 3.4.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 6
Всего: 8



Уважаемые!
Если есть среди участников форума счастливый обладатель bluetooth-принтера, прошу откликнуться.
PM MAIL   Вверх
genrich07
Дата 7.4.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть адаптеры БТ для принтеров, цена около 60 евро., для беспроводной связи с компом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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