Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шрифт в консоле и ASCII art, как побороть? 
V
    Опции темы
Artefact
Дата 25.2.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вчера возникла проблема с ASCII art'ом. Тема моя -> Псевдографика и программа для ленивых. Вроде разобрался, после перевода картинки в псевдографику, надо в gedit уменьшить размер шрифта для нормального отображения картинки. Но как быть если у меня эта картинка часть консольного приложения, например есть код
Код

#include <iostream>
#include <fstream>
using namespace std;

int main ()
{   int n;
    ifstream file_in("PsevdoPic.txt", ios::in);
    cout<<"Хотите увидеть картинку выполненную в ASCII графике?";
    cout<<"1-да, 2-нет"<<endl;
    cin>>n;
    switch(n)
    {
     case 1: cout<<file_in.rdbuf()<<endl; break;
     case 2: cout<<"Программа завершена"<<endl; break;
     default: break;
    }
    return 0;
}


Если я оставлю так, то выполняя данное приложение в консоле у меня размер картинки будет безумно большой. Как следует подправить код? Чтобы и картинка была нужных размеров и шрифт текста "Хотите увидеть картинку..." не портился?
PM MAIL   Вверх
Dronchik
Дата 25.2.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


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

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



Artefact, можно заренее задать размер. То есть ставишь ограничение на размер. Если размер рисунка превышает допустимы можно уменьшать размер рисунка в n-ое количество раз.


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

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


Новичок



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

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



Dronchik, а как это реализовать? Впервые с таким столкнулся...
PM MAIL   Вверх
Dronchik
Дата 25.2.2008, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Звукач ёмаё
**


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

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



Artefact, извени, этим никогда не занимался и следовательно не знаю. Дал только алгоритм каким пользуюсь при программировании графики под директХ. Сорри


--------------------
Вместо слов делай дело, от которого ты фанатеешь. (с)

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


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Artefact, ты хочешь эти картинки динамически грузить и переводить в ASCII или просто нужно показать несколько картинок?

Добавлено через 8 минут и 58 секунд
Я тут нашел парочку программ, которыми можно конвертировать в ASCII, или по крайней мере посмотреть как они это делают. Например:
Код
% convert pictures/gentoo_logo2.png ppm:- | pamscale -width 80 | pnmnorm | pamditherbw | pamtopnm | pbmtoascii
pnmnorm: remapping 117..255 to 0..255
                       o oooMoMMMM"MMoMoooo
                    ooMMMM"M""o"M"M"M"M"MoMMMoo
                oMMM"M o o"o"" M M M"oM"Mo"MoMMMMoo
             o"MMoM "o "o o" "o"o"o"o"o"oM"Mo"MoMM"Moo
          ooMMMM      o  o " "  o" "o"o"o"oMo"MoM"MM"MMoo
         oMMMo    "        " " " o" o"o"o"o"oM"oMM"MM"M"MMoo
       "MMMo                     o "  o" M M M"o"oMM"MM"MM"MMo
     oMMMM                         " "  M "o"o"M"oMoM"M"MoMM"MMMo
    oM"Mo                       o  oooooo  " M M Mo"M"M"MoM"MMoMMMo
   oMMM"                      M"  MMMMMMoMMo  " M M"M"M"M"M"MoMMoMMMo
   MoM"                      MM ooMMMM"MMMMMMo  "M M"M"M"MM"MoMoMM"MMMoo
  M"MM                       MMMM"MMoMMMM"MMMMMo  Mo"M"M"MoMMo"MoMMM"MMoo
  MM"Mo                      "oMMMMMMMMMMMMMM"MM  o"oM"oMMo"MM"MoMoMMM"MMMo
  MMMMMoo                      "MoMo     ""MMMMMo  M M"oM"M"MoMMo"MoMM"MoMMo
  MMMMMM"Moo                    """MMMMoooo"MoMM  M M"o"M"M"MoMMM"MoM"M"MM"MM
  "MMMMMMMMMMooo                    " "M"MM"M"o o"o"o"M"M"M"MoMoM"MoMMM"M"MMMM
    MMMMMMMMMMMMMooo                            o" M Mo"M"M"MoM"M"MoMMoM"MMoMMM
     "MMMMMMMMMMMM"MMooo                      "o "o"o"o"M"M"MoMMM"MoMoM"MMo"MoMo
       "M"MMMMMMMMMMMMMMMMo                   o " o"o"M"oMM"MoM"M"Mo"MM"Mo   MoM
          ""MMMMMMMMMMMMM"M                   o "o" M M"oMoMMM"MM"MM"MoM    "MMM
             ""MMMMMMMM"M                      o" "o"oM"oMoMoM"MoMMM"M    oMMMMM
                 ""MoM"                      "  "o"o"o"oMo"MoMMMoMo""   ooMMMMM"
                 oMM"                       " " " M M"oMoMMMoMoMM"    ooMMMMMMM
               MMM"                          "o" M M Mo"oMoMoMM "   oMMMMMMMM"
            oMMM                           "  o" M M"oM"Mo"Mo"    oMMMMMMMMM
          MM"M                           o " " "o"o"oMo"MM""   oMMMMMMMMMo"
       o"M"M                               " M M M MoM"M"    oMMMMMMMMMM"
      oMM""                             " " "o M M"oMo"   oMMMMMMMMMMM"
    oMMM"                             " " "o"o"o"M M   oMMMMMMMMMMMM
   M"Mo"                            "  M "o"o"o"M " ooMMMMMMMMMMMM
  MMMM                           " " " o"o"o"o"   oMMMMMMMMMMMM"
 MoMMo"                       "o " " "o M M "  oMMMMMMMMMMMM""
MoMMoo" " "  o  o   o  o " " o o" "M M M "  oMMMMMMMMoMMMM"
MoMMMo"o"o" o o"  " o o o" "o "o" M M "  oMMMMMMMMMMMMM"
MMoMMo"o M M oo" M "o o" o"o M M M " ooMMMMMMMMMoMMM""
"MMM"MMoM M M o"o"o"o"o"o"o"oMo"oooMMMMMMMMMMMMMM""
"MMMMMM"MoMoMoMoMo"oMoMoMMM"ooMMMMMMMMMMMMMMMM"
 "MMMMMMMMMoMMoMM"MMMoMMMoMMMMMMMMMMMMMMMM""
   MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
    "MMMMMM"MMMMMMMMMMMMMMMMMMMMMM""
      ""MMMMMMMMoMMMoMMMMMM"M""
         ""M"MMMMMMMM""" "


Смотри imagemagick, netpbm, aview


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Artefact
Дата 25.2.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



nickless, картинки находятся в отдельном текстовом файле уже в ASCII. Насчет динамически грузить и переводить не совсем понял. Да, картинки должны быть показаны когда пользователь согласиться просмотреть их:
ifstream file_in("PsevdoPic.txt", ios::in);
    cout<<"Хотите увидеть картинку выполненную в ASCII графике?";
    cout<<"1-да, 2-нет"<<endl;
Они и показываются, но размер этой анси картинки слишком громадный, в текстовом редакторе решается все просто, я уменьшаю шрифт. Но как такое сделать в консоле я не знаю.
PM MAIL   Вверх
nickless
Дата 25.2.2008, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Цитата(Artefact @  25.2.2008,  17:14 Найти цитируемый пост)
Насчет динамически грузить и переводить не совсем понял.

Я имел ввиду программно загрузить скажем png с помощью imagemagick, сконвертировать в ASCII aalib-ом и показать.

Если надо просто показать картинку, то переключать шрифт в консоли и/или скалировать ASCII-art - имхо излишний геморрой, просто нужно сохранить картинку в ASCII с нужным размером.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Artefact
Дата 25.2.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



nickless, да я уже конвертировал в анси, но на размер изображения влияет шрифт. Я к тому, что надо дописать в коде моем, чтобы я сам регулировал размер шрифта файла?Т.е. анси-картинка выводится  с размером шрифта 12, а мне нужно чтобы было 5. 

Насчет программ спасибо, под никсы не нашел нормальных)

Насчет сохранения анси в нужном размере, пытался, но не понимаю каким образом.

Это сообщение отредактировал(а) Artefact - 25.2.2008, 19:24
PM MAIL   Вверх
nickless
Дата 25.2.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Кстати в примере что я запостил до этого можно легко поменять ширину картинки (-width 80), размер конвертируется X x 2*Y pixel -> X x Y characters

Добавлено через 1 минуту и 35 секунд
Цитата(Artefact @  25.2.2008,  17:22 Найти цитируемый пост)
чтобы я сам регулировал размер шрифта файла?

У файла нет шрифта, там только сам текст, размер шрифта можно регулировать только там, где ты этот текст показываешь, или можно просто вывести больше/меньше букв.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Artefact
Дата 25.2.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за разъяснения. А какой из этих трех программ вы воспользовались для конвертирвоания изображения?
PM MAIL   Вверх
nickless
Дата 25.2.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Цитата(Artefact @  25.2.2008,  17:28 Найти цитируемый пост)
А какой из этих трех программ вы воспользовались для конвертирвоания изображения? 

6 разными из первых двух пакетов smile 

Цитата(nickless @  25.2.2008,  17:01 Найти цитируемый пост)
% convert pictures/gentoo_logo2.png ppm:- | pamscale -width 80 | pnmnorm | pamditherbw | pamtopnm | pbmtoascii

Конвертируем png->ppm -> скалируем до ширины 80 пикселей -> нормализируем цвет -> конвертируем в dithered ч/б -> конвертируем в pnm -> конвертируем pnm->ascii smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Artefact
Дата 25.2.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



nickless, 
Цитата

6 разными из первых двух пакетов

 smile  Извините меня, но если не трудно то поточнее, что именно поставить нужно))

P.S. С меня огромный жирный плюсик за помощь smile 

Это сообщение отредактировал(а) Artefact - 25.2.2008, 19:39
PM MAIL   Вверх
nickless
Дата 25.2.2008, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Цитата(Artefact @  25.2.2008,  17:39 Найти цитируемый пост)
что именно поставить нужно

imagemagick и netpbm
С 99.9% вероятностью есть в менеджере пакетов, если нет, где-то в середине темы есть ссылки на офсайты.

Добавлено через 2 минуты и 51 секунду
aview тоже может сохранять, но только интерактивно и не сильно удобно.

Кстати pbmtoascii (из пакета netpbm) насколько я понимаю может конвертировать только черно-белые картинки, так что может стоит немного поэкспериментировать с гимпом и aview.

Добавлено через 3 минуты и 45 секунд
И вообще это мало относится к программированию на C++ smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Artefact
Дата 25.2.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Через синаптик поставил imagemagick и netpbm. Далее консоль, набираю команду
Цитата

 convert thy.png ppm:- | pamscale -width 80 | pnmnorm | pamditherbw | pamtopnm | pbmtoasciibash: pamtopnm: команда не найдена
bash: pamscale: команда не найдена
bash: pamditherbw: команда не найдена
pbmtoascii: EOF / read error reading magic number
pnmnorm: EOF / read error reading magic number

В чем ошибся?

Это сообщение отредактировал(а) Artefact - 25.2.2008, 20:16
PM MAIL   Вверх
nickless
Дата 25.2.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Цитата(Artefact @  25.2.2008,  18:15 Найти цитируемый пост)
bash: pamscale: команда не найдена

Странно... Какой дистр? Версия netpbm?



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




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


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

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