Bitmap/Write a PPM file: Difference between revisions

m
syntax highlighting fixup automation
m (→‎{{header|BQN}}: Trivial simplifications: +¨ to +, and combine 256| of a list)
m (syntax highlighting fixup automation)
Line 10:
{{trans|Python}}
 
<langsyntaxhighlight lang=11l>T Colour
Byte r, g, b
 
Line 77:
print(bitmap.writeppmp3())
 
File(‘tmp.ppm’, ‘w’).write_bytes(bitmap.writeppmp6())</langsyntaxhighlight>
 
{{out}}
Line 93:
=={{header|Action!}}==
{{libheader|Action! Bitmap tools}}
<langsyntaxhighlight lang=Action!>INCLUDE "H6:RGBIMAGE.ACT" ;from task Bitmap
 
PROC SaveHeader(RgbImage POINTER img
Line 184:
PrintF("Loading %S...%E%E",path3)
Load(path3)
RETURN</langsyntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Write_a_PPM_file.png Screenshot from Atari 8-bit computer]
Line 204:
 
=={{header|Ada}}==
<langsyntaxhighlight lang=ada>with Ada.Characters.Latin_1;
with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
 
Line 229:
end loop;
Character'Write (Stream (File), LF);
end Put_PPM;</langsyntaxhighlight>
The solution writes the image into an opened file. The file format might fail to work on certain [[OS]]es, because output might mangle control characters like LF, CR, FF, HT, VT etc. The OS might also limit the line length of a text file. In general it is a bad idea to mix binary and text output in one file. This solution uses ''stream I/O'', which should be as portable as possible.
 
=={{header|Aime}}==
<langsyntaxhighlight lang=aime>integer i, h, j, w;
file f;
 
Line 249:
16.times(f_bytes, f, drand(255), drand(255), drand(255));
} while ((i += 16) < w);
} while ((j += 1) < h);</langsyntaxhighlight>
 
=={{header|Applesoft BASIC}}==
<langsyntaxhighlight lang=gwbasic> 100 W = 8
110 H = 8
120 BA = 24576
Line 269:
250 END
500 R = C - INT (C / 256) * 256:B = INT (C / 65536):G = INT (C / 256) - B * 256:A = BB + X * 3 + Y * W * 3: POKE A,R: POKE A + 1,G: POKE A + 2,B: RETURN
600 FOR Y = 0 TO H - 1: FOR X = 0 TO W - 1: GOSUB 500: NEXT X,Y: RETURN</langsyntaxhighlight>
=={{header|AutoHotkey}}==
{{works with|AutoHotkey_L|45}}
<langsyntaxhighlight lang=AutoHotkey>
cyan := color(0,255,255) ; r,g,b
cyanppm := Bitmap(10, 10, cyan) ; width, height, background-color
Line 304:
return 0
}
</syntaxhighlight>
</lang>
 
=={{header|AWK}}==
<langsyntaxhighlight lang=AWK>#!/usr/bin/awk -f
BEGIN {
split("255,0,0,255,255,0",R,",");
Line 319:
}
close(outfile);
}</langsyntaxhighlight>
 
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
<langsyntaxhighlight lang=bbcbasic> Width% = 200
Height% = 200
Line 352:
col% = TINT(x%*2,y%*2)
SWAP ?^col%,?(^col%+2)
= col%</langsyntaxhighlight>
 
=={{header|BQN}}==
<langsyntaxhighlight lang=bqn>header_ppm ← "P6
4 8
255
Line 369:
image_ppm ↩ @ + ⥊ image_ppm # deshape, convert to chars (uint8_t)
bytes_ppm ← header_ppm ∾ image_ppm
"small.ppm" •file.Bytes bytes_ppm</langsyntaxhighlight>
{{trans|C}}
<langsyntaxhighlight lang=bqn>header_ppm ← "P6
800 800
255
"
image_ppm ← @ + ⥊ > {256|𝕨‿𝕩‿(𝕨×𝕩)}⌜˜ ↕800
"first_bqn.ppm" •file.Bytes header_ppm ∾ image_ppm</langsyntaxhighlight>
 
=={{header|C}}==
 
This is one file program which writes one color in each step :
<langsyntaxhighlight lang=c>#include <stdlib.h>
#include <stdio.h>
 
Line 403:
(void) fclose(fp);
return EXIT_SUCCESS;
}</langsyntaxhighlight>
 
 
This program writes whole array in one step :
 
<langsyntaxhighlight lang=c>#include <stdio.h>
 
int main()
Line 443:
printf("OK - file %s saved\n", filename);
return 0;
}</langsyntaxhighlight>
 
 
Line 452:
Interface:
 
<langsyntaxhighlight lang=c>void output_ppm(FILE *fd, image img);</langsyntaxhighlight>
 
Implementation:
 
<langsyntaxhighlight lang=c>#include "imglib.h"
 
void output_ppm(FILE *fd, image img)
Line 465:
(void) fwrite(img->buf, sizeof(pixel), n, fd);
(void) fflush(fd);
}</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
This implementation uses a StreamWriter to write the header in text, then writes the pixel data in binary using a BinaryWriter.
<langsyntaxhighlight lang=csharp>using System;
using System.IO;
class PPMWriter
Line 493:
writerB.Close();
}
}</langsyntaxhighlight>
 
=={{header|C++}}==
{{trans|C}}
<langsyntaxhighlight lang=cpp>#include <fstream>
#include <cstdio>
 
Line 514:
 
return EXIT_SUCCESS;
}</langsyntaxhighlight>
 
=={{header|Common Lisp}}==
 
<langsyntaxhighlight lang=lisp>(defun write-rgb-buffer-to-ppm-file (filename buffer)
(with-open-file (stream filename
:element-type '(unsigned-byte 8)
Line 545:
(write-byte green stream)
(write-byte blue stream)))))))
filename)</langsyntaxhighlight>
 
=={{header|D}}==
Line 552:
=={{header|Delphi}}==
Helper class to enable bitmap export to ppm.
<langsyntaxhighlight lang=Delphi>
program btm2ppm;
 
Line 604:
end;
end.
</syntaxhighlight>
</lang>
 
=={{header|E}}==
Line 612:
=={{header|Erlang}}==
Writes a bitmap to PPM file. Uses 24 bit color depth (color max value 255).
<langsyntaxhighlight lang=erlang>
-module(ppm).
 
Line 659:
integer_to_list(Number).
 
</syntaxhighlight>
</lang>
 
=={{header|Euphoria}}==
{{trans|C}}
<langsyntaxhighlight lang=euphoria>constant dimx = 800, dimy = 800
constant fn = open("first.ppm","wb") -- b - binary mode
sequence color
Line 677:
end for
end for
close(fn)</langsyntaxhighlight>
 
Procedure writing [[Bitmap#Euphoria|bitmap]] data storage:
<langsyntaxhighlight lang=euphoria>procedure write_ppm(sequence filename, sequence image)
integer fn,dimx,dimy
dimy = length(image[1])
Line 693:
end for
close(fn)
end procedure</langsyntaxhighlight>
 
=={{header|FBSL}}==
Line 700:
'''24-bpp P.O.T.-size BMP solution:'''
[[File:FBSLWritePpm.PNG|right]]
<langsyntaxhighlight lang=qbasic>#ESCAPECHARS ON
 
DIM bmpin = ".\\LenaClr.bmp", ppmout = ".\\Lena.ppm", bmpblob = 54 ' Size of BMP file headers
Line 722:
WEND
 
FILEPUT(FILEOPEN(ppmout, BINARY_NEW), ppmdata): FILECLOSE(FILEOPEN)</langsyntaxhighlight>
 
=={{header|Forth}}==
<langsyntaxhighlight lang=forth>: write-ppm { bmp fid -- }
s" P6" fid write-line throw
bmp bdim swap
Line 738:
s" red.ppm" w/o create-file throw
test over write-ppm
close-file throw</langsyntaxhighlight>
 
=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
It loads <code>rgbimage_m</code> module, which is defined [[Basic bitmap storage#Fortran|here]].
<langsyntaxhighlight lang=fortran>program main
 
use rgbimage_m
Line 768:
call im%write('fig.ppm')
 
end program</langsyntaxhighlight>
 
=={{header|GAP}}==
<langsyntaxhighlight lang=gap># Dirty implementation
# Only P3 format, an image is a list of 3 matrices (r, g, b)
# Max color is always 255
Line 821:
PutPixel(g, 2, 2, [255, 255, 255]);
PutPixel(g, 2, 3, [0, 0, 0]);
WriteImage("example.ppm", g);</langsyntaxhighlight>
 
=={{header|Go}}==
Code below writes 8-bit P6 format only. See Bitmap task for additional file needed to build working raster package.
<langsyntaxhighlight lang=go>package raster
 
import (
Line 878:
}
return f.Close()
}</langsyntaxhighlight>
Demonstration program. Note that it imports package raster. To build package raster, put code above in one file, put code from Bitmap task in another, and compile and link them into a Go package.
<langsyntaxhighlight lang=go>package main
 
// Files required to build supporting package raster are found in:
Line 898:
fmt.Println(err)
}
}</langsyntaxhighlight>
 
=={{header|Haskell}}==
<langsyntaxhighlight lang=haskell>{-# LANGUAGE ScopedTypeVariables #-}
 
module Bitmap.Netpbm(readNetpbm, writeNetpbm) where
Line 950:
stToIO (getPixels i) >>= hPutStr h . toNetpbm
where magicNumber = netpbmMagicNumber (nil :: c)
maxval = netpbmMaxval (nil :: c)</langsyntaxhighlight>
 
=={{header|J}}==
'''Solution:'''
<langsyntaxhighlight lang=j>require 'files'
 
NB. ($x) is height, width, colors per pixel
Line 960:
header=. 'P6',LF,(":1 0{$x),LF,'255',LF
(header,,x{a.) fwrite y
)</langsyntaxhighlight>
'''Example:'''
Using routines from [[Basic_bitmap_storage#J|Basic Bitmap Storage]]:
<langsyntaxhighlight lang=j> NB. create 10 by 10 block of magenta pixels in top right quadrant of a 300 wide by 600 high green image
pixellist=: >,{;~i.10
myimg=: ((150 + pixellist) ; 255 0 255) setPixels 0 255 0 makeRGB 600 300
myimg writeppm jpath '~temp/myimg.ppm'
540015</langsyntaxhighlight>
 
=={{header|Java}}==
Line 973:
See [[Basic_bitmap_storage#Java|Basic Bitmap Storage]] for the <tt>BasicBitmapStorage</tt> class.
 
<langsyntaxhighlight lang=java>import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
Line 1,001:
}
}
}</langsyntaxhighlight>
 
=={{header|Julia}}==
{{works with|Julia|0.6}}
 
<langsyntaxhighlight lang=julia>using Images, FileIO
 
h, w = 50, 70
Line 1,016:
 
save("data/bitmapWrite.ppm", img)
save("data/bitmapWrite.png", img)</langsyntaxhighlight>
 
=={{header|Kotlin}}==
For convenience, we repeat the code for the class used in the [[Bitmap]] task here.
<langsyntaxhighlight lang=scala>// Version 1.2.40
 
import java.awt.Color
Line 1,071:
}
}
}</langsyntaxhighlight>
 
=={{header|Lua}}==
===Original===
<langsyntaxhighlight lang=lua>
 
-- helper function, simulates PHP's array_fill function
Line 1,183:
 
example_colorful_stripes():writeP6('p6.ppm')
</syntaxhighlight>
</lang>
===Alternate===
Uses the alternate Bitmap implementation [[Bitmap#Alternate|here]], extending it with..
<langsyntaxhighlight lang=lua>Bitmap.savePPM = function(self, filename)
local fp = io.open(filename, "wb")
if fp == nil then return false end
Line 1,198:
fp:close()
return true
end</langsyntaxhighlight>
Example usage:
<langsyntaxhighlight lang=lua>local bitmap = Bitmap(11,5)
bitmap:clear({255,255,255})
for y = 1, 5 do
Line 1,209:
end
end
bitmap:savePPM("lua3x5.ppm")</langsyntaxhighlight>
 
 
=={{header|LiveCode}}==
LiveCode has built in support for importing and exporting PBM, JPEG, GIF, BMP or PNG graphics formats
<langsyntaxhighlight lang=LiveCode>
export image "test" to file "~/Test.PPM" as paint -- paint format is one of PBM, PGM, or PPM
</syntaxhighlight>
</lang>
 
 
Line 1,222:
Added ToFile in group which return the function Bitmap. In this example we export using ToFile and get bytes (unsigned values) from buffer, and we export from outside, using getpixel and convert the RGB value to bytes (color returned as a negative number, so we have to invert before further process it)
===P3 type===
<langsyntaxhighlight lang=M2000 Interpreter>
Module Checkit {
Function Bitmap (x as long, y as long) {
Line 1,335:
Checkit
 
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,356:
 
===P6 type===
<langsyntaxhighlight lang=M2000 Interpreter>
Module PPMbinaryP6 {
If Version<9.4 then 1000
Line 1,535:
PPMbinaryP6
 
</syntaxhighlight>
</lang>
 
=={{header|Mathematica}}/ {{header|Wolfram Language}}==
<langsyntaxhighlight lang=Mathematica>Export["file.ppm",image,"PPM"]</langsyntaxhighlight>
 
=={{header|MATLAB}} / {{header|Octave}}==
<langsyntaxhighlight lang=MATLAB>R=[255,0,0;255,255,0];
G=[0,255,0;255,255,0];
B=[0,0,255;0,0,0];
Line 1,552:
fprintf(fid,'P6\n%i %i\n255\n',size(R));
fwrite(fid,[r,g,b]','uint8');
fclose(fid);</langsyntaxhighlight>
 
=={{header|Modula-3}}==
<code>Bitmap</code> is the module from [[Basic_bitmap_storage#Modula-3|Basic Bitmap Storage]].
<langsyntaxhighlight lang=modula3>INTERFACE PPM;
 
IMPORT Bitmap, Pathname;
Line 1,562:
PROCEDURE Create(imgfile: Pathname.T; img: Bitmap.T);
 
END PPM.</langsyntaxhighlight>
<langsyntaxhighlight lang=modula3>MODULE PPM;
 
IMPORT Bitmap, Wr, FileWr, Pathname;
Line 1,592:
BEGIN
END PPM.</langsyntaxhighlight>
 
=={{Header|Nim}}==
<langsyntaxhighlight lang=nim>import bitmap
import streams
 
Line 1,630:
for col in 0..<image.w:
image[col, row] = color(0, 0, 255)
image.writePPM("output.ppm")</langsyntaxhighlight>
 
=={{Header|OCaml}}==
 
<langsyntaxhighlight lang=ocaml>let output_ppm ~oc ~img:(_, r_channel, g_channel, b_channel) =
let width = Bigarray.Array2.dim1 r_channel
and height = Bigarray.Array2.dim2 r_channel in
Line 1,647:
output_char oc '\n';
flush oc;
;;</langsyntaxhighlight>
 
=={{header|Oz}}==
As a function in the module <code>BitmapIO.oz</code>:
<langsyntaxhighlight lang=oz>functor
import
Bitmap
Line 1,689:
end
end
end</langsyntaxhighlight>
 
=={{header|Perl}}==
{{libheader|Imager}}
<langsyntaxhighlight lang=perl>use Imager;
 
$image = Imager->new(xsize => 200, ysize => 200);
Line 1,700:
xmin => 50, ymin => 50,
xmax => 150, ymax => 150);
$image->write(file => 'bitmap.ppm') or die $image->errstr;</langsyntaxhighlight>
 
=={{header|Phix}}==
Copy of [[Bitmap/Write_a_PPM_file#Euphoria|Euphoria]]. The results may be verified with demo\rosetta\viewppm.exw
<langsyntaxhighlight lang=Phix>-- demo\rosetta\Bitmap_write_ppm.exw
constant dimx = 512, dimy = 512
constant fn = open("first.ppm","wb") -- b - binary mode
Line 1,717:
end for
end for
close(fn)</langsyntaxhighlight>
The following more general purpose routine is used in several other examples (via include ppm.e):
<langsyntaxhighlight lang=Phix>global procedure write_ppm(string filename, sequence image)
integer fn = open(filename,"wb"),
dimx = length(image),
Line 1,733:
end for
close(fn)
end procedure</langsyntaxhighlight>
 
=={{header|PHP}}==
Writes a P6 binary file
<langsyntaxhighlight lang=PHP>class Bitmap {
public $data;
public $w;
Line 1,788:
$b->fill(2, 2, 18, 18, array(240,240,240));
$b->setPixel(0, 15, array(255,0,0));
$b->writeP6('p6.ppm');</langsyntaxhighlight>
 
=={{header|PicoLisp}}==
<langsyntaxhighlight lang=PicoLisp>(de ppmWrite (Ppm File)
(out File
(prinl "P6")
(prinl (length (car Ppm)) " " (length Ppm))
(prinl 255)
(for Y Ppm (for X Y (apply wr X))) ) )</langsyntaxhighlight>
 
=={{header|PL/I}}==
<langsyntaxhighlight lang=PL/I>/* BITMAP FILE: write out a file in PPM format, P6 (binary). 14/5/2010 */
test: procedure options (main);
declare image (0:19,0:19) bit (24);
Line 1,845:
write file (out) from (ch);
end put_integer;
end test;</langsyntaxhighlight>
 
=={{header|Prolog}}==
This is an extremely straight forward way to write in Prolog, more complicated methods might use DCGs:
<langsyntaxhighlight lang=prolog>
:- module(bitmapIO, [
write_ppm_p6/2]).
Line 1,866:
maplist(maplist(maplist(put_byte(Output))),Pixels),
close(Output).
</syntaxhighlight>
</lang>
 
usage:
 
<langsyntaxhighlight lang=prolog>
:- use_module(bitmap).
:- use_module(bitmapIO).
Line 1,879:
write_ppm_p6('AlmostAllBlack.ppm',AlmostAllBlack).
 
</syntaxhighlight>
</lang>
 
=={{header|PureBasic}}==
<langsyntaxhighlight lang=PureBasic>Procedure SaveImageAsPPM(Image, file$, Binary = 1)
; Author Roger Rösch (Nickname Macros)
IDFiIe = CreateFile(#PB_Any, file$)
Line 1,915:
CloseFile(IDFiIe)
EndIf
EndProcedure</langsyntaxhighlight>
 
=={{header|Python}}==
Line 1,921:
 
Extending the example given [[Basic_bitmap_storage#Alternative_version|here]]
<langsyntaxhighlight lang=python>
# String masquerading as ppm file (version P3)
import io
Line 1,984:
bitmap.writeppm(ppmfileout)
ppmfileout.close()
</syntaxhighlight>
</lang>
 
=={{header|R}}==
{{libheader|pixmap}}
<syntaxhighlight lang=r>
<lang r>
# View the existing code in the library
library(pixmap)
Line 1,995:
#Usage
write.pnm(theimage, filename)
</syntaxhighlight>
</lang>
 
=={{header|Racket}}==
<langsyntaxhighlight lang=racket>
;P3
(define (bitmap->ppm bitmap output-port)
Line 2,040:
;or any other output port
 
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
Line 2,046:
{{works with|Rakudo|2016-01}}
 
<syntaxhighlight lang=raku perl6line>class Pixel { has uint8 ($.R, $.G, $.B) }
class Bitmap {
has UInt ($.width, $.height);
Line 2,075:
}
 
$*OUT.write: $b.P6;</langsyntaxhighlight>
Converted to a png. (ppm files not locally supported)
 
Line 2,081:
 
=={{header|REXX}}==
<langsyntaxhighlight lang=rexx>/*REXX program writes a PPM formatted image file, also known as a P6 (binary) file. */
green = 00ff00 /*define a pixel with the color green. */
parse arg oFN width height color . /*obtain optional arguments from the CL*/
Line 2,101:
call charout oFID, _ /*write the image's raster to the file.*/
call charout oFID /*close the output file just to be safe*/
/*stick a fork in it, we're all done. */</langsyntaxhighlight>
<br><br>
 
=={{header|Ruby}}==
Extending [[Basic_bitmap_storage#Ruby]]
<langsyntaxhighlight lang=ruby>class RGBColour
def values
[@red, @green, @blue]
Line 2,125:
end
alias_method :write, :save
end</langsyntaxhighlight>
 
=={{header|Rust}}==
<langsyntaxhighlight lang=rust>use std::path::Path;
use std::io::Write;
use std::fs::File;
Line 2,196:
Ok(())
}
}</langsyntaxhighlight>
 
=={{header|Scala}}==
Extends Pixmap class from task [[Read_ppm_file#Scala|Read PPM file]].
<langsyntaxhighlight lang=scala>object Pixmap {
def save(bm:RgbBitmap, filename:String)={
val out=new DataOutputStream(new FileOutputStream(filename))
Line 2,212:
}
}
}</langsyntaxhighlight>
 
=={{header|Scheme}}==
{{Works with|Scheme|R<math>^5</math>RS}}
<langsyntaxhighlight lang=scheme>(define (write-ppm image file)
(define (write-image image)
(define (write-row row)
Line 2,237:
(display 255)
(newline)
(write-image image)))))</langsyntaxhighlight>
Example using definitions in [[Basic bitmap storage#Scheme]]:
<langsyntaxhighlight lang=scheme>(define image (make-image 800 600))
(image-fill! image *black*)
(image-set! image 400 300 *blue*)
(write-ppm image "out.ppm")</langsyntaxhighlight>
 
=={{header|Seed7}}==
<langsyntaxhighlight lang=seed7>$ include "seed7_05.s7i";
include "draw.s7i";
include "color.s7i";
Line 2,269:
close(ppmFile);
end if;
end func;</langsyntaxhighlight>
 
=={{header|Sidef}}==
{{trans|Raku}}
<langsyntaxhighlight lang=ruby>subset Int < Number {|n| n.is_int }
subset UInt < Int {|n| n >= 0 }
subset UInt8 < Int {|n| n ~~ ^256 }
Line 2,315:
}
 
%f"palette.ppm".write(b.p6, :raw)</langsyntaxhighlight>
 
=={{header|Stata}}==
Line 2,321:
P3 format only, with Mata.
 
<langsyntaxhighlight lang=stata>mata
void writeppm(name, r, g, b) {
n = rows(r)
Line 2,340:
b = J(6, 6, 255)
writeppm("image.ppm", r, g, b)
end</langsyntaxhighlight>
 
=={{header|Tcl}}==
{{libheader|Tk}}
Referring to [[Basic bitmap storage#Tcl]]:
<langsyntaxhighlight lang=tcl>package require Tk
 
proc output_ppm {image filename} {
Line 2,363:
binary scan [read $fh 3] c3 pixel
foreach colour $pixel {puts [expr {$colour & 0xff}]} ;# ==> 255 \n 0 \n 0 \n
close $fh</langsyntaxhighlight>
 
=={{header|UNIX Shell}}==
Line 2,370:
 
Add the following function to the <tt>Bitmap_t</tt> type
<langsyntaxhighlight lang=bash> function write {
_.to_s > "$1"
}</langsyntaxhighlight>
Then you can:
<langsyntaxhighlight lang=bash>Bitmap_t b
# do stuff to b, and save it:
b.write '$HOME/tmp/bitmap.ppm'</langsyntaxhighlight>
 
=={{header|Vedit macro language}}==
Line 2,403:
=={{header|Visual Basic .NET}}==
 
<langsyntaxhighlight lang=vbnet>Public Shared Sub SaveRasterBitmapToPpmFile(ByVal rasterBitmap As RasterBitmap, ByVal filepath As String)
Dim header As String = String.Format("P6{0}{1}{2}{3}{0}255{0}", vbLf, rasterBitmap.Width, " "c, rasterBitmap.Height)
Dim bufferSize As Integer = header.Length + (rasterBitmap.Width * rasterBitmap.Height * 3)
Line 2,419:
Next
My.Computer.FileSystem.WriteAllBytes(filepath, bytes, False)
End Sub</langsyntaxhighlight>
 
=={{header|Wren}}==
{{libheader|DOME}}
This takes a while to run as DOME needs to build up the file contents in string form before saving them to a PPM file. It is not currently possible to write files a line at a time.
<langsyntaxhighlight lang=ecmascript>import "graphics" for Canvas, ImageData, Color
import "dome" for Window, Process
import "io" for FileSystem
Line 2,469:
}
 
var Game = Bitmap.new("Bitmap - write to PPM file", 320, 320)</langsyntaxhighlight>
 
=={{header|XPL0}}==
<langsyntaxhighlight lang=XPL0>include c:\cxpl\codes; \intrinsic 'code' declarations
def Width=180, Height=135, Color=$123456;
 
Line 2,509:
WriteImage;
SetVid(3); \restore display to normal text mode
]</langsyntaxhighlight>
 
=={{header|Yabasic}}==
<langsyntaxhighlight lang=Yabasic>clear screen
 
wid = 150 : hei = 200
Line 2,541:
 
poke #fn, asc("\n")
close #fn</langsyntaxhighlight>
 
=={{header|zkl}}==
<langsyntaxhighlight lang=zkl>// convert Windows BMP (bit map) image to PPM
 
// Read BMP file
Line 2,560:
}
 
File("foo.ppm","wb").write(ppm); // File.stdout isn't binary, let GC close file</langsyntaxhighlight>
{{out}}
<pre>
10,333

edits