Page 1 of 2

Несколько портированных графических утилит

Posted: Fri Sep 09, 2011 11:47 pm
by SoUrcerer
Как временное и не очень удобное решение предлагаю порт программы, которая конвертирует bmp/tga/gif/ppm в jpg (т.е. png не понимается).

cjpeg - сжимает изображение в JPEG файл.

Правила пользования
Spoiler:cjpeg [параметры] [-outfile имя_выходного файла] [имя_входного_файла]

Параметры (можно сокращать):
-quality N[,...] Уровень сжатия (0..100; 5-95 оптимальное значение)
-grayscale Монохромный JPEG
-optimize Оптимизировать таблицу Хоффмана (результат меньше, скорость ниже)
-progressive Создать прогрессивный JPEG
-scale M/N Масштабировать в M/N раз, (например, 1/2)
-targa Входной файл - это tga (обычно не требуется)

Для продвинутых пользователей:
-dct int Использовать целочисленный DCT (по умолчанию)
-dct fast Использовать быстрый DCT (менее точно)
-dct float Использовать DCT с плавающей запятой
-nosmooth Без высококачественного даунсэмплинга
-restart N Установить интервал сбросов (???) в строках
-smooth N Сглаживание (N=1..100 - степень)
-maxmemory N Ограничить использование памяти (в килобайтах)

Для мастеров:
-arithmetic Use arithmetic coding
-baseline Force baseline quantization tables
-qtables file Use quantization tables given in file
-qslots N[,...] Set component quantization tables
-sample HxV[,...] Set component sampling factors
-scans file Create multi-scan JPEG per script file
Legal issues
Spoiler:============

In plain English:

1. We don't promise that this software works. (But if you find any bugs,
please let us know!)
2. You can use this software for whatever you want. You don't have to pay us.
3. You may not pretend that you wrote this software. If you use it in a
program, you must acknowledge somewhere in your documentation that
you've used the IJG code.

In legalese:

The authors make NO WARRANTY or representation, either express or implied,
with respect to this software, its quality, accuracy, merchantability, or
fitness for a particular purpose. This software is provided "AS IS", and you,
its user, assume the entire risk as to its quality and accuracy.

This software is copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding.
All Rights Reserved except as specified below.

Permission is hereby granted to use, copy, modify, and distribute this
software (or portions thereof) for any purpose, without fee, subject to these
conditions:
(1) If any part of the source code for this software is distributed, then this
README file must be included, with this copyright and no-warranty notice
unaltered; and any additions, deletions, or changes to the original files
must be clearly indicated in accompanying documentation.
(2) If only executable code is distributed, then the accompanying
documentation must state that "this software is based in part on the work of
the Independent JPEG Group".
(3) Permission for use of this software is granted only if the user accepts
full responsibility for any undesirable consequences; the authors accept
NO LIABILITY for damages of any kind.

These conditions apply to any software derived from or based on the IJG code,
not just to the unmodified library. If you use our work, you ought to
acknowledge us.

Permission is NOT granted for the use of any IJG author's name or company name
in advertising or publicity relating to this software or products derived from
it. This software may be referred to only as "the Independent JPEG Group's
software".

We specifically permit and encourage the use of this software as the basis of
commercial products, provided that all warranty or liability claims are
assumed by the product vendor.


ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
ansi2knr.c is NOT covered by the above copyright and conditions, but instead
by the usual distribution terms of the Free Software Foundation; principally,
that you must include source code if you redistribute it. (See the file
ansi2knr.c for full details.) However, since ansi2knr.c is not needed as part
of any program generated from the IJG code, this does not limit you more than
the foregoing paragraphs do.

The Unix configuration script "configure" was produced with GNU Autoconf.
It is copyright by the Free Software Foundation but is freely distributable.
The same holds for its supporting scripts (config.guess, config.sub,
ltmain.sh). Another support script, install-sh, is copyright by X Consortium
but is also freely distributable.

The IJG distribution formerly included code to read and write GIF files.
To avoid entanglement with the Unisys LZW patent, GIF reading support has
been removed altogether, and the GIF writer has been simplified to produce
"uncompressed GIFs". This technique does not use the LZW algorithm; the
resulting GIF files are larger than usual, but are readable by all standard
GIF decoders.

We are required to state that
"The Graphics Interchange Format(c) is the Copyright property of
CompuServe Incorporated. GIF(sm) is a Service Mark property of
CompuServe Incorporated."
В общем, может кому-то очень сильно понадобится, а аналогов пока что в Колибри нет.

Re: zSea - полноценный графический просмотрщик

Posted: Sat Sep 10, 2011 12:32 am
by SoUrcerer
(Это рабочая в Колибри программа, ее уже можно использовать, например, как дополнение к zSea).

Re: zSea - полноценный графический просмотрщик

Posted: Sat Sep 10, 2011 2:04 am
by Mario
185 Кб не сжатого бинарника, тут даже дизассемблер не поможет - пока разгребешь портянку уже на пенсию придется уходить. :)
Кстати программы падает при холостом запуске. Исходники жутко секретны?

Re: zSea - полноценный графический просмотрщик

Posted: Sat Sep 10, 2011 7:31 am
by SoUrcerer
Странно, что падает. У себя такого не замечал. Исходники на сайте, на который я оставил ссылку - это стандартная утилита из пакета libjpeg, линкована статически. Разумеется, программа-крокодил, но это лучше, чем ничего. Я планирую перейти на Колибри в скором времени, хотя бы на недельку, и кучи полезных утилит мне будет не хватать, поэтому готовлюсь к переезду.

Re: zSea - полноценный графический просмотрщик

Posted: Sat Sep 10, 2011 9:26 am
by Mario
Sorcerer wrote:Я планирую перейти на Колибри в скором времени, хотя бы на недельку, и кучи полезных утилит мне будет не хватать, поэтому готовлюсь к переезду.
Экстремал.

Re: zSea - полноценный графический просмотрщик

Posted: Sat Sep 10, 2011 11:19 am
by Gluk
Mario, Sorcerer в этом не первый и не последний

Несколько портированных графических утилит

Posted: Sat Sep 10, 2011 6:24 pm
by SoUrcerer
Мне оказались нужны следующие утилиты (и, соответственно, я их портировал для Колибри):
cjpeg - сохранение gif/pnm/bmp в jpeg
djpeg - сохранение jpeg в gif/pnm/bmp
pnm2png - сохранение pnm в png
png2pnm - сохранение png в pnm
Эти четыре утилиты (с различными потерями и в несколько этапов) позволяют сохранять файлы gif/png/jpg/bmp в gif/png/jpg/bmp. :)

Кроме того, я почему-то использую консольные текстовые редакторы. В основном, nano - но для него нужно портировать ncurses или реализовать около десятка функций поверх console.obj (кому интересно, могу скинуть файл с описанием этих функций и всего прочего, вдруг кому-то захочется сделать свой curses). Мне удалось завести одну из первых версий редактора joe - клон редактора WordStar. Он довольно-таки удобный (для меня), не считая глюков с прыгающим курсором (возможно, неполная поддержка нужных escape-последовательностей в console.obj?) и проблемы gcc4 (затирание argc/argv при инициализации консоли). Если у кого-нибудь есть gcc-3.3 и время, предлагаю собрать редактор из исходников и выложить сюда (у меня интернет не позволяет скачать и установить gcc 3.3).

Cjpeg можно найти в теме про zSea, а все остальные утилиты находятся в приложенном архиве вместе с документацией. (поправка от модератора - теперь она находится в этой теме в верхнем посте/ Mario)

Re: zSea - полноценный графический просмотрщик

Posted: Sat Sep 10, 2011 10:26 pm
by maximYCH
Sorcerer, как собираешься решать проблему с браузером? Или ты на эту неделю практически без Интернета собираешься жить?

Re: Несколько [бесполезных] портированных утилит

Posted: Sat Sep 10, 2011 10:51 pm
by Serge
Лучше console.obj поправить.

Re: Несколько [бесполезных] портированных утилит

Posted: Sun Sep 11, 2011 7:55 am
by SoUrcerer
В каком плане подправить? Если ты про curses (проклятья!), то там главное - это работа с вводом (noecho, nodelay, keypad) и с виртуальными экранами.Или ты про глюки argc/argv?

Re: Несколько [бесполезных] портированных утилит

Posted: Sun Sep 11, 2011 10:02 am
by Serge
Про глюк argc/argv. Проверь последнюю ревизию.

Re: Несколько [бесполезных] портированных утилит

Posted: Sun Sep 11, 2011 10:28 am
by SoUrcerer
Ёлки-моталки! То есть... В рот мне ноги! Работает!
Только нужно внести исправления и вернуть con_write_string, которая когда-то была потеряна, по всей видимости.

Code: Select all

EXPORTS:
...
dd	szcon_write_string,	con_write_length

...
szcon_write_string	db 'con_write_string',0

Re: Несколько [бесполезных] портированных утилит

Posted: Sun Sep 11, 2011 2:24 pm
by Serge
Наверное её переименовали в con_write_asciiz.
; void __stdcall con_write_asciiz(const char* string);

Re: Несколько портированных графических утилит

Posted: Sun Sep 11, 2011 2:30 pm
by Mario
Часть сообщений в эту тему была перенесена из темы zSea, поскольку больше соответствует этой теме.

Re: Несколько [бесполезных] портированных утилит

Posted: Sun Sep 11, 2011 4:48 pm
by SoUrcerer
Serge wrote:Наверное её переименовали в con_write_asciiz.
; void __stdcall con_write_asciiz(const char* string);
Нет-нет, это совершенно разные команды! write_asciiz выводит именно asciiz-строку, а write_string выводит n символов. Мне нужна именно вторая, как аналог write(stdout,char,n).