Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 9961|回復: 0
打印 上一主題 下一主題

[問題求助] 關於BMP轉logo

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-5-7 10:16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好
, B9 P# S( F, ]1 |6 G# m! i2 h' Q1 f7 V% t5 B
以下是skill& H+ x: u" ?: A1 k  @0 _% W* b
let((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column
" p6 ?  {3 z: K3 l3 P. M7 O        i dot x y signature offset width height pixel ImageSize )) O% `9 {+ D& i+ u7 ?: J& \

# f1 ^) k0 J, ?; `! Q" m0 P        win = hiGetCurrentWindow()9 G! i5 ~  c* @6 G* T4 X0 }0 ~5 y
        cv = getEditRep(win); [- ~% W3 O. Y2 e* z. S4 i

0 P# b, G; o7 R* E        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File: F" I. S; i7 Q7 l- ^
        Layer = list("TTOPME" "drawing")        ;;; Output Layer. I6 h# f; ~  W5 e* ^- W
        Grid = 1                                ;;; Rectangle Size
, I# Q" M! H" U( L+ K        column = 0" S. d; }6 b0 D8 _

1 l/ t+ N4 H" a# w7 R4 U& |8 dprocedure(MessageForm(text)
$ T0 }4 ]  |; o    prog( ()( I2 S: ]( s) G- Y
        hiDisplayAppDBox(0 {5 P; j4 K$ z8 \# W
                ?name 'JWDBox_Message9 c8 w+ |% f+ ?! M
                ?dboxBanner "Message!!"5 B  @' b6 t) H- E0 a
                ?buttonLayout 'Close9 T7 P- T( z2 n6 N7 G
                ?dboxText text
7 e( i6 T: X2 _* i$ a- t2 K        )* Y% O7 W( |+ p9 S! N4 z
    );prog
8 K' C) K( W9 q7 @+ e);procedure
' {" p6 @: T5 F- R4 o, O
' Z: A; f  _# [. {& A6 \& {;Read BMP file
4 x0 m( p- `9 p  f! R! [        if(InFile = infile(bmpfile) then
  p5 C+ p. U/ w0 i, i1 R: W3 i                bmpSize = fileLength(bmpfile)
: U8 n1 s7 R" X+ D                declare(WORD[bmpSize])' y! o4 y! |+ I
                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) )
# O- o7 L0 n0 p3 B                close(InFile). @# _7 y( f: l" U3 n1 s4 F+ Z  k# l
        else  S4 u1 r: _9 q
                MessageForm("Input file does not exist!")3 s( S, f9 J( g" v/ P
                return()* d$ Q% w8 c+ J3 W
        )
) z6 I  m' l) H4 j
4 N7 I. u+ Y3 X8 ^5 P) i        sprintf(signature "%02x%02x" WORD[0] WORD[1])( d, P" Q. ^$ C9 S7 N3 J
        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a]
, W8 R# r; ?* j6 \) T1 t        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
5 r* L" v( T7 ^# e5 B! Y5 U        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
- |" K0 W8 C- R7 V' D& }, l. L5 `# E" o        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]+ `1 l/ j$ `/ H+ |! O+ T1 Q4 I
        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]
: }; Z7 @2 }! w7 j1 d# L
# M- O; l% H8 o9 z" E        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())" o' s) A; |- `8 N' E
        printf("offset  : 0x%x \n" offset)- t: K  ^% t! l' u
        printf("width   : 0x%x \n" width)
4 k( i, \0 K5 S        printf("height  : 0x%x \n" height)5 `  B, ~; X  X, d1 j
        printf("ImgSize : 0x%x \n" ImageSize)4 Q! E& n  _6 M; Q( e% q% C
  N9 b! g3 u7 l/ }' v+ X
;check bmp file, X6 {! f0 i5 |, p( }* m
        if(!equal(signature "424d") then
) Q6 f. Q$ q7 D1 @; y& n) `+ R                MessageForm("*ERROR* Standard Input is not a BMP file")& r- C- G1 T) l& D; ]  r/ D
                return()
6 q* N/ K" h$ ~; W( A        )) o% z( P$ v# X3 T* C! N. R; t" e7 N

$ P; k9 @: W# ?5 ?- O" d;check mono bmp file, k# ?+ \1 R: n- V' Y
        if(!equal(pixel 0x01) then- |/ u: y# R2 q, B2 w3 u5 N' P5 c
                MessageForm("*ERROR* only supports mono bmp files"). m/ B' `6 j3 _6 t1 q1 X9 S
                return()- u# Z. v/ w, e% j
        )
- I- c/ F1 I) N8 w# F/ C0 g* x; W$ k: h1 G' x, j( U. R+ K
;BMP2LAY" J/ q2 |9 U: u: H' C$ e3 S" E
        max_column = ImageSize/height<<3
9 B4 O8 n- N$ f, n+ Q        number = offset+ImageSize-19 a( f) v+ Y+ j2 u1 m
  v9 h, E9 o& U$ |+ @, N; r
        for(Wnum offset number3 m& U8 k& X3 N( N8 z! n* ~
                row = fix((Wnum-offset)/(max_column>>3))
% C/ m% z$ T' ^- G* U1 ~% P                y = Grid*row$ x) ?7 Z: f3 Q8 r$ H  k

; a: X* y9 y7 W                for(i 0 74 D7 [' A2 U5 {, L. f6 ^, [* i
                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>
$ A4 C, W3 Z  N. j- M7 Z" w                        x = Grid*column3 s+ G# e5 _; S
                        if(zerop(dot) && column<width then9 @: K: E- n( L% F2 ?! r
                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))1 D- e" _+ M; ?; q# E4 K
                        )
: W; @+ S/ ?: v- k0 [- a                        column++' J7 l! Z7 e. {) Y' _' b5 |
                );for
) T) w4 p7 ^: C- S                if(equal(column max_column)        column=0): V: W3 p7 I0 m2 e
                Wnum++
+ X: ~* l: F# d  w  u% ^( _( J8 [        );for
9 ?$ z/ n: |. t4 y; e, e3 u! e1 C8 W3 \+ f( S
        hiZoomIn(win list(-10:-10 x+10:y+10))8 [  [9 |# ^' n: n
        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
% p% h2 ]1 X( w: H);let) O: ^. }7 H. u

3 }' Y% S5 [; z3 M% {. `
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2025-2-22 04:36 PM , Processed in 0.154009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表