|
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好
9 C- s5 N1 h( o1 L% p0 j3 M F6 }$ `
( c6 t- w" d, F以下是skill
& G) d7 j! [8 v& f+ q8 j2 z; qlet((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column
+ G( E! n( k. J) @' ]* ^$ F. I' t i dot x y signature offset width height pixel ImageSize )
7 z% C/ W" s4 `+ d5 ^" n% I- ~6 t$ M
! w. @; v7 z5 I2 M7 D6 Q win = hiGetCurrentWindow()- N4 Y. K" y' i6 Y& c J8 a( F8 ?
cv = getEditRep(win)8 C8 w5 K/ z2 ]' o3 I" R
: t$ z- V+ u* w8 ~+ Z
bmpfile = "~/number_mini.bmp" ;;; Input BMP File! D0 C( S7 S0 `, |9 L& \) \
Layer = list("TTOPME" "drawing") ;;; Output Layer0 q: {, M& p0 w: Y2 n! {
Grid = 1 ;;; Rectangle Size U9 N- t) Z+ k# `: U
column = 0) e- P+ y9 c. u. C
2 n3 _1 x1 s& x& m
procedure(MessageForm(text)1 ? v) `! p7 B7 [9 ]
prog( ()
% n; p# W' l2 i$ G/ b" e- B hiDisplayAppDBox(
! y5 A& e7 c( H3 c6 y ?name 'JWDBox_Message
; p' u5 V1 Z5 S# ~# x# p3 [' g ?dboxBanner "Message!!"
4 V2 h8 H; t, v" P* F$ U ]$ | ?buttonLayout 'Close) [& k5 C! W; M4 D1 c. Y: @* K$ W% o
?dboxText text
4 W; m1 C+ B$ y3 A )2 w, A- }; N' o- A1 \
);prog
' v* Y, {6 o' k! j);procedure
/ `7 V+ n# l% I! U) W
& H0 Y+ Y, i4 [, O: s;Read BMP file
# f/ V) G8 R9 u6 z if(InFile = infile(bmpfile) then
- G* b8 K" H* b3 Q7 N# { bmpSize = fileLength(bmpfile)! i6 `( R) e- j' p' q0 M
declare(WORD[bmpSize])
E" v7 I6 O4 V" g6 U for(Wnum 0 bmpSize-1 WORD[Wnum] = charToInt(getc(InFile)) )9 X7 z5 g2 z3 W! f* Y5 _$ b* m" F
close(InFile)) \$ a# q7 \0 h
else3 C3 f! f# K1 N: T6 B9 j7 J) S* P3 V
MessageForm("Input file does not exist!")
; c; f' ~: g% c5 _- `- @$ A* W1 M return()
; {% U# H5 ^! x/ T )
* e e: D7 \3 y, u
( v) P) z% G/ {* D sprintf(signature "%02x%02x" WORD[0] WORD[1])- X, `9 Q2 n# e" \, i" ]7 x: a: a
offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a] $ N N9 D. }' ^! |/ t4 {
width = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
8 @6 D; r+ B# _3 d. O9 i9 P9 r height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]; \ C. Z! L. D @" z6 q/ B' N
pixel = (WORD[0x1d]<<8) + WORD[0x1c]
) M r$ m- Y$ X! G, N1 ~ ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22], H- ^, m' p' f/ r# ^7 V, B8 a7 q
; Q: Y: S( d( D8 F7 g/ f
printf("--- BMP2LAY Start --- %L\n" getCurrentTime())& @ \, s! [' T6 O
printf("offset : 0x%x \n" offset)4 V ~& C8 r- Y- |: ~
printf("width : 0x%x \n" width); d) _+ _( K9 G7 z$ t* a( T* [0 ?
printf("height : 0x%x \n" height)
! y- J0 H4 s3 W P' a+ a printf("ImgSize : 0x%x \n" ImageSize)% o# m) }; R, o: |' g9 l7 }" S
. f3 `3 a; \2 Q! r2 l;check bmp file
$ J0 i! e/ `5 @" g if(!equal(signature "424d") then
9 ]6 V6 a0 j' H/ t1 o( }$ c5 s MessageForm("*ERROR* Standard Input is not a BMP file")7 K7 p( _" N, E
return()/ q# I- e0 I; r) ], Z. E
)
3 i7 D9 f3 u2 Q; `. P. ?# G
* l- l6 W. J/ ]# C;check mono bmp file$ ~8 ]5 L- D1 v. _
if(!equal(pixel 0x01) then6 k& U$ S. A u( F) u2 t5 p
MessageForm("*ERROR* only supports mono bmp files") P4 s+ @. c* ^, p& i, x4 Y
return()
6 p6 G |' d! m6 `7 ` )! i$ q; v3 b- a* A9 X9 U
; Z5 I6 v3 j3 u: A;BMP2LAY
& |# z( y3 y1 K9 r! V3 C v" k+ j max_column = ImageSize/height<<3
% Z4 Z5 V2 D _6 \ number = offset+ImageSize-17 H+ ^& B3 |8 A& I, h E$ t
& a6 A% h8 u+ Q6 ~& y) Z
for(Wnum offset number
2 a, k* ~- L/ O; I row = fix((Wnum-offset)/(max_column>>3))
. r; k0 {2 |$ K z- B" |4 a y = Grid*row
1 d- Y1 u+ I) E! X/ g. ]* ^0 b$ ~" `7 q0 H) G& U
for(i 0 7
8 e/ Z1 Q: ~/ @, [# y dot = bitfield1(WORD[Wnum] 7-i) ; bit<7> ~ bit<0>2 u& s/ b+ I9 n1 }9 s
x = Grid*column
; ]+ e4 J/ z1 b R J+ L0 M S if(zerop(dot) && column<width then
4 y) P/ a: ~ `: e# N geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))+ H' R0 s& Q# A% E! g0 P
)
: M! R1 _8 o& ]3 T column++! h3 |+ F9 ^* [ x) T3 S, S+ j* \
);for
p: u/ k( @+ ?8 M0 f$ }) I. y0 x if(equal(column max_column) column=0)1 ~1 O' o" {, K9 b3 Z/ z0 k* D; `
Wnum++0 p; a# n5 l% G U. d3 f) B
);for+ j4 F$ `8 G: j8 E# |/ c
) C4 K. P z2 g) R; z hiZoomIn(win list(-10:-10 x+10:y+10))* I( ^ Q% l( d" b/ @- J. i' {- v
printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime()) ?" v: ^; l- E. |( J% }8 X6 E
);let7 c+ O7 H9 l8 c, F6 I
! H P# r( s+ W% F
|
|