Sync
This commit is contained in:
parent
6f050a029e
commit
776bba907c
3887 changed files with 59894 additions and 7280 deletions
13
Task/Bitmap-Write-a-PPM-file/AWK/bitmap-write-a-ppm-file.awk
Normal file
13
Task/Bitmap-Write-a-PPM-file/AWK/bitmap-write-a-ppm-file.awk
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#!/usr/bin/awk -f
|
||||
BEGIN {
|
||||
split("255,0,0,255,255,0",R,",");
|
||||
split("0,255,0,255,255,0",G,",");
|
||||
split("0,0,255,0,0,0",B,",");
|
||||
|
||||
outfile = "P3.ppm";
|
||||
printf("P3\n2 3\n255\n") >outfile;
|
||||
for (k=1; k<=length(R); k++) {
|
||||
printf("%3i %3i %3i\n",R[k],G[k],B[k])>outfile
|
||||
}
|
||||
close(outfile);
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
R=[255,0,0;255,255,0];
|
||||
G=[0,255,0;255,255,0];
|
||||
B=[0,0,255;0,0,0];
|
||||
|
||||
|
||||
r = R'; r(:);
|
||||
g = R'; g(:);
|
||||
b = R'; b(:);
|
||||
fid=fopen('p6.ppm','w');
|
||||
fprintf(fid,'P6\n%i %i\n255\n',size(R));
|
||||
fwrite(fid,[r,g,b]','uint8');
|
||||
fclose(fid);
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
;P3
|
||||
(define (bitmap->ppm bitmap output-port)
|
||||
(define height (send bitmap get-height))
|
||||
(define width (send bitmap get-width))
|
||||
(define buffer (make-bytes (* width height 4))) ;buffer for storing argb data
|
||||
(send bitmap get-argb-pixels 0 0 width height buffer) ;copy pixels
|
||||
(parameterize ([current-output-port output-port])
|
||||
(printf "P3\n~a ~a\n255" width height) ;header
|
||||
(for ([i (* width height)])
|
||||
(define pixel-position (* 4 i))
|
||||
(when (= (modulo i width) 0) (printf "\n")) ;end of row
|
||||
(printf "~s ~s ~s "
|
||||
(bytes-ref buffer (+ pixel-position 1)) ;r
|
||||
(bytes-ref buffer (+ pixel-position 2)) ;g
|
||||
(bytes-ref buffer (+ pixel-position 3)))))) ;b
|
||||
|
||||
|
||||
(call-with-output-file "image.ppm" #:exists 'replace #:mode 'text
|
||||
(lambda (out)
|
||||
(bitmap->ppm bm out)))
|
||||
|
||||
; P6
|
||||
(define (bitmap->ppm bitmap output-port)
|
||||
(define height (send bitmap get-height))
|
||||
(define width (send bitmap get-width))
|
||||
(define buffer (make-bytes (* width height 4))) ;buffer for storing argb data
|
||||
(send bitmap get-argb-pixels 0 0 width height buffer) ;copy pixels
|
||||
(parameterize ([current-output-port output-port])
|
||||
(printf "P6\n~a ~a\n255\n" width height) ;header
|
||||
(for ([i (* width height)])
|
||||
(define pixel-position (* 4 i))
|
||||
(write-byte (bytes-ref buffer (+ pixel-position 1))) ; r
|
||||
(write-byte (bytes-ref buffer (+ pixel-position 2))) ; g
|
||||
(write-byte (bytes-ref buffer (+ pixel-position 3)))))) ;b
|
||||
|
||||
(call-with-output-file "image.ppm" #:exists 'replace #:mode 'binary
|
||||
(lambda (out)
|
||||
(bitmap->ppm bm out)))
|
||||
|
||||
;or any other output port
|
||||
Loading…
Add table
Add a link
Reference in a new issue