Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 關於BMP轉logo

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-5-7 10:16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好- f; \) ]& M6 }5 k
2 y) u  U4 k0 T# k. U
以下是skill
% ]; z; ]$ ?( P; l4 E6 p1 plet((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column
6 E9 r+ I5 l; g2 s        i dot x y signature offset width height pixel ImageSize )
* N  E5 r; a/ w4 ^8 G, J  `' k# A+ [1 o( N7 Z
        win = hiGetCurrentWindow()
/ \3 ^0 H$ O: s- k; U        cv = getEditRep(win)6 \# y: x0 V/ U7 y% m6 Q) s0 L
- C/ B5 E9 z+ x$ @  u$ H
        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File
  p8 t" r: U7 T( }( M& ~  O        Layer = list("TTOPME" "drawing")        ;;; Output Layer
  G" C- k# b6 l5 g# u        Grid = 1                                ;;; Rectangle Size2 w& L) y1 r$ @$ t4 y4 n) x, |) M$ q7 r
        column = 02 f: ~! q8 a* o9 B# C+ j
7 {" N! z: W1 T/ L! E: w' M
procedure(MessageForm(text)
2 x. z( b& s2 T) D6 |5 t    prog( ()9 u! |1 a1 g1 }6 c2 A! k; O
        hiDisplayAppDBox(
, t: `+ b( [6 `4 W# u; |                ?name 'JWDBox_Message
8 U3 P! U0 X1 J4 Y                ?dboxBanner "Message!!"3 Z+ b( j+ }9 w1 s0 z/ m! S
                ?buttonLayout 'Close8 c# Y: f2 c- U9 S8 R& T4 ~: ^  w
                ?dboxText text
3 |: S7 r7 p' i. Y' ~1 C        )5 ]; D1 c  k0 B
    );prog
( O$ `8 B5 |4 R) |5 N3 O);procedure, I5 ^7 I: M, N5 U+ x3 E3 r2 }2 G
2 ?/ G3 t" d9 ~  `2 m' i: v
;Read BMP file( `1 z1 b- M  h+ u+ l' N# K1 U3 a
        if(InFile = infile(bmpfile) then
# Q9 M* Y8 R; R" |& T- n8 y0 T                bmpSize = fileLength(bmpfile)6 Y" O3 }6 v. b( d" c
                declare(WORD[bmpSize])
2 f( l5 Y- n9 j# q$ I9 r% R/ D& n( ?                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) )
4 y8 [$ H# g/ W2 l                close(InFile)
6 W# ~2 n8 d2 R( z; y9 m( A- C        else5 A% s/ K/ V/ X% Z1 g4 r! B
                MessageForm("Input file does not exist!")* C6 I( |: H. C0 u; ~! y- u( A& k
                return(); l: S. B* L7 f( o- Q, p. w4 g2 B
        )
! K% W" T0 Z/ H, A* G* u1 K2 H& Q/ }) o4 L) e! |
        sprintf(signature "%02x%02x" WORD[0] WORD[1])+ V+ g1 K1 `, i5 C
        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a] 3 s' a* p% J# V* ~' f. V
        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
# |. K0 i9 c* j" _0 H        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
; Q0 Y& r& c4 n" x% d' _        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]
% g9 k, Z) e9 ]% @        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]7 I5 d0 P- Z9 A) i! t
7 ]1 d" D. {( Z% q/ @2 m3 Z
        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
/ Z5 P4 p( x2 P( C% @; U( R+ h: _9 T8 [        printf("offset  : 0x%x \n" offset)' y$ R" w' C8 M
        printf("width   : 0x%x \n" width)1 A9 Z+ s0 R4 O$ Y/ r
        printf("height  : 0x%x \n" height)
. I& S" s; k( D        printf("ImgSize : 0x%x \n" ImageSize): \7 }: }2 O/ p, G# k1 F
& w9 ?5 r8 E/ x# A( G/ R( x
;check bmp file
& G- s; C7 U! X* c3 C5 ]$ R) D        if(!equal(signature "424d") then* \% @0 F9 ]6 ^) Y2 b7 C7 J
                MessageForm("*ERROR* Standard Input is not a BMP file")
4 y# I' X; N% Y# Q+ m                return()
. a( W, r# B: |5 T        )
9 l; X# N( w# k8 {/ H# `- y( G, O- O1 o2 h* X! B; Q9 s  ?
;check mono bmp file+ {2 \$ A& l5 @; s/ {/ j! ^. S
        if(!equal(pixel 0x01) then0 t' R4 I; @( H( a: t, }. {
                MessageForm("*ERROR* only supports mono bmp files"). s$ W7 \9 L; _) u$ s+ X, c% y: a
                return(); b# w- g/ w3 x8 U
        )4 K0 n5 P% N9 t* b9 m
" i4 D7 s* a! D! y6 x  i
;BMP2LAY
7 u( N5 A$ U' e( A" f        max_column = ImageSize/height<<39 z4 q: {8 o! v0 Y; G+ s
        number = offset+ImageSize-1
+ t0 W( s, U- T# R  f  q8 q
3 q/ m: C9 D4 d" Y# c        for(Wnum offset number
' K" i- V2 }4 L$ R9 e( o                row = fix((Wnum-offset)/(max_column>>3))- p8 G( n" c! `+ }1 [% @7 k: l
                y = Grid*row
) ~: P* v% R* n* ^
) s5 I$ S4 ?' [- i, r                for(i 0 7
9 p: U( y, ?# }! f0 w* s% x                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>
; V0 z6 s. f( a. K! G# ~% ]( U                        x = Grid*column* @' [. T0 U4 s
                        if(zerop(dot) && column<width then
/ M, |8 u8 L; A7 }" c. s                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))4 K! Y; S* _  g% U# o( r- H* o
                        )
. s* ^3 a6 x$ ~8 x                        column++" ~  Y+ W# s- m" |  S
                );for! x/ F% C0 _7 E
                if(equal(column max_column)        column=0)7 J# j( w5 V& x; Z: ]
                Wnum++9 E7 R$ z3 [+ v* l) T8 x8 m7 `
        );for
0 e- d9 N8 `  c& w8 j4 ^2 ~
  X: {9 b. c- y8 h9 f        hiZoomIn(win list(-10:-10 x+10:y+10))
# ]6 _9 L) R4 R4 j) E+ S        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
0 v6 i0 i. k7 A, K6 i! d1 });let) d+ m) L: j8 q( _" N
# W! i0 v+ w" _: B# n
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-14 04:25 PM , Processed in 0.164521 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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