Re: put_code

Massimo De Gregorio <[email protected]>
Newsgroups gmane.comp.gnu.prolog.general
Message-ID <[email protected]>
Did it! Perfect.

Thank you very much indeed.

Ciao (tchau)
     Massimo


----------------------------------------------------------------
Massimo De Gregorio
Research Scientist
Istituto di Cibernetica "Eduardo Caianiello" - CNR
Via Campi Flegrei 34
Comprensorio "A. Olivetti" - Ed. 70
80078 Pozzuoli (NA) - ITALIA
Tel. (+ 39) 0818675151
Fax: (+ 39) 0818675158
Skype: massimo.de.gregorio
E-mail: [email protected]
----------------------------------------------------------------

Il giorno 01/nov/2012, alle ore 15:22, Salvador Pinto Abreu ha scritto:

> Hello Massimo,
> 
> Guess you'd do something along the lines of:
> 
> put_bytes([]).
> put_bytes([B|Bs]) :- put_byte(B), put_bytes(Bs).
> 
> 
> and then
> 
> …
> put_bytes("P5\n32 32\n255\n"),
> …
> 
> remember strings in Prolog are lists of integers with the character codes…
> 
> You may consider format_to_codes/3, which may be used as in:
> 
> | ?- format_to_codes(X, "P5\n%d %d\n255\n", [32, 32]).   
> 
> X = [80,53,10,51,50,32,51,50,10,50,53,53,10]
> 
> which produces the exact same string as in your example.
> 
> 
> cheers
> -salvador
> 
> On Nov 1, 2012, at 12:43, [email protected] wrote:
> 
>> It worked perfectly. The only problem I have now is the following.
>> 
>> The PPM format has three line at the beginning such as:
>> 
>> P5
>> 32 32
>> 255
>> 
>> where P5 is the flag for binary greyscale
>> 32 32 are the size of the image
>> 255 number of greylevels
>> 
>> Just after that starts the binary part of the file that I can
>> generate following your good suggestion.
>> 
>> Now, how can I write, in the same file, the first three text line
>> followed by the binaries ones?
>> 
>> Massimo
>> 
>> Citando Salvador Pinto Abreu <[email protected]>:
>> 
>>> On Nov 1, 2012, at 11:30, [email protected] wrote:
>>> 
>>>> I am trying to automatically generate PPM P5 files.
>>>> In order to write the binary part of the files, I am using
>>>> 
>>>> put_code/1
>>> 
>>> maybe, considering you are building a non-text file, you'd be better  off having Prolog use a binary stream, in which case you'd be using  the put_byte/1 built-in.
>>> 
>>> consider this, for instance:
>>> 
>>> 11:56:56$ gprolog
>>> GNU Prolog 1.4.1
>>> By Daniel Diaz
>>> Copyright (C) 1999-2012 Daniel Diaz
>>> | ?- open(foo, write, _FOO, [type(binary), alias(foo)]),
>>>    set_output(foo),
>>>    put_byte(0), put_byte(1), put_byte(2), put_byte(3),
>>>    close(foo).
>>> 
>>> (1 ms) yes
>>> | ?- halt.
>>> 
>>> 11:57:05$ od -b foo
>>> 0000000   000 001 002 003
>>> 0000004
>>> 11:57:10$ ls -l foo
>>> -rw-r--r--  1 spa  staff     4B Nov  1 11:56 foo
>>> 11:57:19$
>>> 
>>> hope this helps
>>> -salvador
>>> 
>>> 
>> 
>> 
>> 
>> ----------------------------------------------------------------
>> Massimo De Gregorio
>> Research Scientist
>> Istituto di Cibernetica "Eduardo Caianiello" - CNR
>> Via Campi Flegrei 34
>> Comprensorio "A. Olivetti" - Ed. 70
>> 80078 Pozzuoli (NA) - ITALIA
>> Tel. (+ 39) 0818675151
>> Fax: (+ 39) 0818675158
>> Skype: massimo.de.gregorio
>> E-mail: [email protected]
>> ----------------------------------------------------------------
>> 
>> ----------------------------------------------------------------
>> This message was sent using IMP, the Internet Messaging Program.
>> 
>> 
>

_______________________________________________
Users-prolog mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/users-prolog
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.