Важная информация

User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 19 из 19

Тема: Конвертер изображений из PC в ZX-Spectrum

  1. #11
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кстати, о Спектруме. А в чем преимущество к известным утилитам bp2scr и другим?

  2. #12
    Сибирский антропоморфн Аватар для Black Cat / Era CG
    Регистрация
    06.05.2010
    Адрес
    Бердск, НСО
    Сообщений
    4,532
    Спасибо Благодарностей отдано 
    913
    Спасибо Благодарностей получено 
    846
    Поблагодарили
    628 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Шынни Посмотреть сообщение
    Кстати, о Спектруме. А в чем преимущество к известным утилитам bp2scr и другим?
    Поддержка конвертирования во все режимы, реализуемые в Пентагоне от автора конвертера. Об чем и написано в 1 посте
    Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.

    Seamos realistas y hagamos lo imposible!

    Ernesto Che Guevara
    Переехал сюда: SteinBlume (ex ATM CP/M Explorer)
    http://era-cg.su

    Скрытый текст

    Speccy2010 r2 (Спасибо m.d. & xlat),
    Sinclair ZX Spectrum + (Спасибо stepmotor),
    ZX Evolution rev.C + 5'25 FDD Epson SD-700AA + NedoPC PAL-Coder (Спасибо m.d. & xlat)
    [свернуть]

  3. #13
    Activist
    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    233
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Похожая утилита, опенсорс, Windows/Linux/macOS: https://github.com/jarikomppa/img2spec
    Может лучше ее допиливать?

  4. #14
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mastermind Посмотреть сообщение
    Может лучше ее допиливать?
    еще бы её с фичами bmp2scr подружить. Например - масштабирование картинки итпф.

  5. #15
    Activist Аватар для AzAtom
    Регистрация
    05.04.2015
    Адрес
    г. Майкоп
    Сообщений
    292
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Какой-нибудь dithering планируется? Алгоритм Флойда-Стейнберга или сеткой (не знаю точно как он называется) были бы уместны.

    - - - Добавлено - - -

    Готовые черно-белые картинки плохо получаются, некоторые целые знакоместа выходят полностью черные. И если в знакоместе есть черные точки, то яркость знакоместа получается обычная, а не повышенная.

  6. #16
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    657
    Поблагодарили
    511 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Northwood Посмотреть сообщение
    Flash Color
    А ГДЕ ЖО ФЛЕШ КОЛОР?
    НЕМЕДЛЕННО ФПИЛИТЬ!


    Цитата Сообщение от Northwood Посмотреть сообщение
    очень напоминает расширенный видеорежим Profi-1024
    а где прочитать про его видео режимы?
    и тожо бы не помешало впилить поддержку

    ...

    Последняя активность 13.07.2018
    мда
    Последний раз редактировалось NEO SPECTRUMAN; 11.06.2019 в 06:05.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Сибирский антропоморфн Аватар для Black Cat / Era CG
    Регистрация
    06.05.2010
    Адрес
    Бердск, НСО
    Сообщений
    4,532
    Спасибо Благодарностей отдано 
    913
    Спасибо Благодарностей получено 
    846
    Поблагодарили
    628 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Он вроде бы где-то писал, что у него там какие-то проблемы, завал. В общем, ему временно не до хобби.
    Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.

    Seamos realistas y hagamos lo imposible!

    Ernesto Che Guevara
    Переехал сюда: SteinBlume (ex ATM CP/M Explorer)
    http://era-cg.su

    Скрытый текст

    Speccy2010 r2 (Спасибо m.d. & xlat),
    Sinclair ZX Spectrum + (Спасибо stepmotor),
    ZX Evolution rev.C + 5'25 FDD Epson SD-700AA + NedoPC PAL-Coder (Спасибо m.d. & xlat)
    [свернуть]

  9. #18
    Member Аватар для Serdjuk
    Регистрация
    07.09.2008
    Адрес
    г. Новокузнецк, Кемеровская обл.
    Сообщений
    61
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не подскажите где почитать за алгоритмы конвертации любой цветной картинки в 2-х цветную (wbmp например) с % дизеринга ?

    Upd:


    https://m.habr.com/ru/post/326936/
    Последний раз редактировалось Serdjuk; 12.08.2019 в 06:32.

  10. #19
    Member Аватар для Dwa83
    Регистрация
    31.12.2017
    Адрес
    г. Реж
    Сообщений
    155
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Serdjuk Посмотреть сообщение
    Не подскажите где почитать за алгоритмы конвертации любой цветной картинки в 2-х цветную
    У себя делал так:

    Код:
                for (int y = 0; y < 192; y += 8)   //цикл по высоте(по знакоместам)
                for (int x = 0; x < 256; x += 8)   //цикл по ширине(по знакоместам)
                {
                	map<TColor,int> cmap;         // создаём map в которой ключ - цвет, значение - количество пикселей данного цвета в знакоместе
    
                	for (int yy = 0; yy < 8; yy++)//цикл по пикселям знакоместа
                	for (int xx = 0; xx < 8; xx++)
                    {
                            TColor c = ColorMod(Canvas->Pixels[x+xx][y+yy]); // модификация цвета пикселя в отдельной функции
                	        Canvas->Pixels[260+x+xx][y+yy] = c; // выведем преобразованную картинку рядом с оригиналом(цвета уже ZX, но не 2 цвета на знакоместа)
                    	cmap[c]++; // увеличим счётчик данного цвета в мапе
                    }
    
                    map<TColor,int>::iterator it;
    
                    TColor ink = TColor(0);// цвет INK пока что чёрный
                    int ci = 0; // переменная для сравнения количества пикселей разных цветов
                    
                    // найдём цвет, который в знакоместе встречается чаще всех, и сделаем INK
                    for (it = cmap.begin(); it != cmap.end(); it++) // пройдёмся по map с сохранёнными цветами
                    {
                    	if (it->second > ci) //если количество пикселей данного цвета больше чем предыдущее сохранённое количество
                            {
                        	        ci = it->second; //сохраним наибольшее количество
                                    ink = it->first; // сохраним сам цвет, который соответствует этому количеству
                            }
                    }
    
                    // удалим с мапы найденый цвет
                    cmap.erase(ink);
    
                    TColor paper = TColor(0);
                    int cp = 0;
    
                    // найдём второй цвет, который в знакоместе встречается чаще всех после INK, и сделаем его цветом PAPER
                    for (it = cmap.begin(); it != cmap.end(); it++)
                    {
                    	if (it->second > cp)
                            {
                        	        cp = it->second;
                                    paper = it->first;
                            }
                    }
    
                    // все остальные цвета, отличные от PAPER и INK, будем выводить либо тем, либо вторым цветом.
                    bool cur = false; // если истина - INK, если ложь - PAPER(так появится зернистость, чередование цвета INK и PAPER в тех местах, где цвета отличные от данных)
    
                    // опять пройдёмся по изображению
                    for (int yy = 0; yy < 8; yy++)
                	for (int xx = 0; xx < 8; xx++)
                    {
                            TColor c = Canvas->Pixels[260+x+xx][y+yy];
                            // далее чередование цветов
                            if (c != ink && c != paper)
                            {
                        	        if (cur) c = ink;
                                    else c = paper;
                                    cur = !cur;
                            }
    
                		Canvas->Pixels[260+x+xx][y+yy] = c;
                    }
    
                }
    И вспомогательные функции

    Код:
    // принимает компонент RGB цвета
    int Compr(int c)
    {
    	if (c < 96) return 0; // если меньше 96, то этот цвет ближе к чёрному
            if (c >= 224) return 255; // если больше 224, то цвет ближе к цвету повышенной яркости, чем к обычному
            return 192;// иначе цвет обычной яркости
    }
    
    // принимает RGB цвет
    TColor ColorMod(TColor c)
    {
            // выделим компоненты
    	int r = Compr(GetRValue(c));
            int g = Compr(GetGValue(c));
            int b = Compr(GetBValue(c));
    
            // тут два варианта преобразования
            int brig = (r!=192 && g!=192 && b!=192) ? 255 : 192; // повышенная яркость только тогда, когда все компоненты с повышенной яркостью(либо 0)
            //int brig = (r==255 || g==255 || b==255) ? 255 : 192; // если хотябы 1 компонент повышеной яркости, то всё знакоместо будем считать повышенной яркости, иначе всё знакоместо обычной яркости
            if (r != 0) r = brig;
            if (g != 0) g = brig;
            if (b != 0) b = brig;
    
            return (TColor)RGB(r, g, b);
    }

    Результаты(оригинал - вариант 1 - вариант 2):

    Нажмите на изображение для увеличения. 

Название:	конвертирование в ZX.jpg 
Просмотров:	138 
Размер:	62.2 Кб 
ID:	71531
    Последний раз редактировалось Dwa83; 16.02.2020 в 11:23.

Страница 2 из 2 ПерваяПервая 12

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Конвертер MP3 to AY
    от VETER в разделе Музыка
    Ответов: 13
    Последнее: 18.01.2015, 21:14
  2. Ответов: 7
    Последнее: 24.07.2013, 17:50
  3. ZX->VGA конвертер.
    от CHRV в разделе Изображение
    Ответов: 164
    Последнее: 28.06.2010, 11:26
  4. Ответов: 18
    Последнее: 18.06.2006, 16:50

Ваши права

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