http://qs1969.pair.com?node_id=11139961


in reply to Re: How to create and save an image from RGB values
in thread How to create and save an image from RGB values

Welcome old friend Netpbm / ppm, that's OK but something more efficient (in output file size as well as output file format) is needed. Thanks.

  • Comment on Re^2: How to create and save an image from RGB values

Replies are listed 'Best First'.
Re^3: How to create and save an image from RGB values
by LanX (Saint) on Dec 28, 2021 at 00:02 UTC
    You didn't say it's such an amount of data, I'm wondering what kind of images you are creating. Charts? Fractals? °

    Anyway ... It's been a while since I've worked with convert , but IIRC it's possible to compose bigger pics from smaller ones.

    So you could write out PPM's of small temporary chunks (like stripes of lines) and convert them to your desired compact format and finally glue all parts together.

    update

    °) more importantly, how are you able to keep your RGB array in memory if it's too big for the disk?

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

        There is a Mandelbrot folder inside the Imager source tree. It looks like one can specify a filter to Imager. To build, I set the CPATH environment due to unable to find imconfig.h.

        $ cpanm Imager $ wget https://cpan.metacpan.org/authors/id/T/TO/TONYC/Imager-1.012.ta +r.gz $ tar xf Imager-1.012.tar.gz && cd Imager-1.012/Mandelbrot $ perl Makefile.PL $ CPATH=~/perl5/perlbrew/perls/perl-5.32.1/lib/site_perl/5.32.1/x86_64 +-linux-thread-multi/Imager/include make $ make install

        Running make test inside the Mandelbrot folder fails for me, so I created a script. Rendering and output to PNG takes 0.131 seconds.

        use strict; use warnings; use Imager; use Imager::Filter::Mandelbrot; my $im = Imager->new(xsize => 1000, ysize => 1000); $im->filter(type => 'mandelbrot',) or die("# ", $im->errstr, $/); $im->write(file => 'mandel1.png');

        The C code calls i_ppix per each pixel.

        We seem to constantly talk past each other.

        You said you have Image::Magick installed and creating PPM is easy.

        Hence convert from intermediate PPMs to whatever format you want.

        This can't be slow and gives you full flexibility.

        You don't even need to create temporary PPM files since blobs are supported too.

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        Wikisyntax for the Monastery