Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 關於BMP轉logo

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-5-7 10:16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好9 g* K; X1 D0 E6 p& i7 n2 n5 E

& b( S' D2 p2 s/ B  B& y5 J$ }以下是skill) D$ n6 D+ ~2 f/ b% U
let((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column
% F  t+ k) Y- m, i  e/ p5 [% l; t        i dot x y signature offset width height pixel ImageSize )
+ m* Q" b% V# H. D
" i! j+ r' D3 Z  ~3 a' u; b        win = hiGetCurrentWindow(): u4 y4 M- W" \" G
        cv = getEditRep(win)+ ]4 P* D9 G0 T+ i& ]
6 x2 C& O: w5 n" n
        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File
0 v( O3 H9 x$ @5 T* e9 F4 r1 k; N8 t        Layer = list("TTOPME" "drawing")        ;;; Output Layer
& A- B9 k3 J8 t; l9 I/ t        Grid = 1                                ;;; Rectangle Size
# M9 Q3 n* n+ M4 T8 \8 q1 R4 R        column = 0
. F5 X- T+ ]3 X+ V0 Q- X$ V' }# B1 j7 G) S% i1 j' M0 @
procedure(MessageForm(text)' c0 A( q3 e9 R  K' [4 D& }
    prog( ()5 t) v3 `' I4 j
        hiDisplayAppDBox(
% y# D" M' I2 ^% u* z2 G- u                ?name 'JWDBox_Message* s& Q; s& K) g: t3 x. Z  c; @
                ?dboxBanner "Message!!"
2 s$ v5 C+ W7 a& X                ?buttonLayout 'Close
1 Z6 Y' h, d2 l) a. C) E; M8 p                ?dboxText text
: Y+ I. F8 Y% W4 {/ E3 _5 G        )
5 Q5 |0 Z5 u" i6 g    );prog
% ?# d; K( @+ ~/ Z);procedure  A! d' x2 O: m; ?* k
) h# y; X) G9 P7 q. Y' s3 d) a% j
;Read BMP file; P& u( H- L! n
        if(InFile = infile(bmpfile) then
0 N  e) P( h9 N- m  W                bmpSize = fileLength(bmpfile)' u' p0 c. G! M+ P
                declare(WORD[bmpSize])% r! a& \& _9 _, j( E
                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) )6 K! T  T& a' Q* [# u& X/ r
                close(InFile)
/ f; m+ M9 B$ V* n        else! M* W) }& X9 ]8 C& ~
                MessageForm("Input file does not exist!")6 `# V6 p# [9 O: X) Q% o1 n
                return()
6 f% B$ E4 u! W& Z# D        )
$ L% z* E0 I: d9 W/ V4 Z3 Z2 ~1 f5 ]8 M/ F
        sprintf(signature "%02x%02x" WORD[0] WORD[1])5 s/ N5 K  Y' \* Q
        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a] 8 ~' O8 \4 r& t7 {. ?$ ]; m9 L
        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
1 ~7 M. ^7 t9 B( |+ o, e        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
2 q; O- F! k  }        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]
0 N. [* {2 `# n% Q4 U: D2 q        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]
7 v. X; R) P5 ^. _. F5 S4 v5 |  N) a% D( h
        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
" F& P3 [: x1 I2 Z4 A8 |        printf("offset  : 0x%x \n" offset)
& v, t3 J, P) y! g        printf("width   : 0x%x \n" width)7 P/ L3 e9 v2 N7 f: S" g: v/ A
        printf("height  : 0x%x \n" height)( g& w- ^5 u! D% i
        printf("ImgSize : 0x%x \n" ImageSize)  ?4 b7 Y* p- r# F8 p

+ Z: n$ g) s9 ^" f& W;check bmp file
( }/ \# A$ y6 I- T" O/ X; a  k& p5 x8 \" z        if(!equal(signature "424d") then
9 z3 f7 W, ~+ `$ w                MessageForm("*ERROR* Standard Input is not a BMP file")
; d" a& U! e* N9 m2 q                return()
3 S( t) d3 V$ |; |. h        )
6 v( A3 |  {( Q1 ~! ?
; J8 J0 m7 t0 c;check mono bmp file
7 o5 f, F8 P% V4 V$ K6 V8 U. r        if(!equal(pixel 0x01) then
  A% M; t3 T- K7 y5 ~) H( w                MessageForm("*ERROR* only supports mono bmp files")
' b+ m  z* z" j) ~5 f# i                return()5 [; \9 g: p; v8 x' d
        )0 M8 T: a( u/ l/ n: x* N
; e8 j8 T! X" f
;BMP2LAY, {8 ?) Q* L# R
        max_column = ImageSize/height<<3
* ]$ k  X. k) V2 }        number = offset+ImageSize-1
" u5 b+ V9 W4 j' m. }& \: k$ A( E7 B& n. H+ N
        for(Wnum offset number
# J9 c( q* v* J+ T7 p                row = fix((Wnum-offset)/(max_column>>3))
2 }% d( P6 r$ b, ~0 O+ E                y = Grid*row; p) F) M0 ?  g- k* T4 i& |! A
' y3 ^; r4 j  T  ^( g7 K  q
                for(i 0 7& ]% X8 L% x% z' i- o; o5 B
                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>0 P  l; h" i- q) R" y7 ^
                        x = Grid*column
% J! z" p: i$ D# \: i                        if(zerop(dot) && column<width then
! _0 ~1 u* }- C- W2 y                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))
( a6 k9 _) s0 I3 ^, b7 t) t                        )
( \) G* y  J' q  ]' g                        column++( u8 L5 M) b8 X( x. ^: l% F
                );for/ }/ z# P6 A0 X1 ?
                if(equal(column max_column)        column=0)
( u- S  e3 T* W& s6 F+ r: m                Wnum++* _. m/ x" G; y2 w% s# E, P. ^
        );for# u  F0 w+ a2 k2 w! `

: G% r7 ^0 ^: w' X: [        hiZoomIn(win list(-10:-10 x+10:y+10))( P3 \5 X; k# ?, B1 j) P1 v. E! o
        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
, X' `% ]6 ~) q# Y; _);let
% g( P& m" b2 i/ y# q
2 R/ m. {% D( {2 s6 G# ~2 K
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 06:34 AM , Processed in 0.103006 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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