Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 關於BMP轉logo

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-5-7 10:16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好
% k# }2 Y* j* P# a+ J; o
3 n* C: v. `; v) K+ s/ x7 Q$ b以下是skill% N) _7 w' Q( m& H) z
let((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column' B0 I% k+ j: d1 B
        i dot x y signature offset width height pixel ImageSize )
! H6 V/ F: z! J
4 {6 b3 W/ u6 L+ e7 m" [) |% t        win = hiGetCurrentWindow()
/ j3 j& [. G0 C6 P        cv = getEditRep(win)
5 f1 p, O7 ]. Y( w& [
2 _1 [/ u2 W% {6 ?+ d! J        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File
# G" B2 Q: Q2 @4 H        Layer = list("TTOPME" "drawing")        ;;; Output Layer
9 l4 P3 e0 S. y        Grid = 1                                ;;; Rectangle Size
7 M1 i7 K! i, ^, T        column = 0, L5 ?+ \1 |3 v
3 j( i: J0 {* j2 O
procedure(MessageForm(text)3 ?, i( R4 R# I/ Z8 L8 S
    prog( ()- c# Z- F, Q; ]  _# S7 J0 L
        hiDisplayAppDBox(/ f* j) m- C- T  ]; U
                ?name 'JWDBox_Message
8 P' {% _3 ]8 v                ?dboxBanner "Message!!"
% y1 v; x  Z' b& X2 f                ?buttonLayout 'Close6 q8 U, [0 P% q; X0 ~2 k
                ?dboxText text
* M' P8 U8 [, N1 P: H; N        )( k5 L" {% O0 V2 W
    );prog0 |! X+ Y! X8 t  t( A
);procedure
. s3 m* V$ e" f7 k
6 S% Q6 L) g2 i& O3 m5 |4 |;Read BMP file
# s% }8 I% l- h8 P% {* i) T        if(InFile = infile(bmpfile) then+ x0 D6 K, [1 C( `) I' b
                bmpSize = fileLength(bmpfile)
& |5 r* W- s& x/ \9 }                declare(WORD[bmpSize])" @1 p3 z; T6 I2 I* E& Y: I# |: L4 ?
                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) )
+ y$ m* Z  @& W/ N& {% y                close(InFile)2 {1 L+ ]/ C. h+ u
        else
( h5 b# s& h; X9 k1 {0 O                MessageForm("Input file does not exist!")
9 ]- a6 F- ?; O$ s" d, v8 ]                return()
6 n- |; j0 \, r        )
* x; u/ a+ w# c, ~- O4 f8 t: R4 q- @2 W6 {" T0 |
        sprintf(signature "%02x%02x" WORD[0] WORD[1])0 A; _. K% h: k+ \# N
        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a]
) c" ^% r0 S: e% P        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
- o8 J& e, T+ K6 m        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
0 i$ {3 d0 o' I- T1 o" I1 S8 ^4 U        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]! B- }2 I5 c8 a# j! I
        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]
+ l7 a; X8 T. G( O& X
0 ~5 C" Q' A! p6 }1 X' U        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
  N8 s7 V' Z$ r% A        printf("offset  : 0x%x \n" offset)
7 D& |/ g" Z5 e/ ~' l0 k* C        printf("width   : 0x%x \n" width)
" x( D! s* o: J7 L5 p: y        printf("height  : 0x%x \n" height)
+ ?! q4 n# ~: C2 s        printf("ImgSize : 0x%x \n" ImageSize). x( L% n5 `3 e1 N& t, U/ V% g

" H7 m) S& ?5 n/ i4 z) ?; r;check bmp file9 y# B; t) v. S1 r4 ?
        if(!equal(signature "424d") then
1 t' F3 e" j' s: b# ~! s8 E$ Z1 E                MessageForm("*ERROR* Standard Input is not a BMP file")2 N+ o% \8 k3 F8 b% }- M; e' B
                return()
2 [9 E) e) C& d4 d+ o7 v3 ~% G        )
# Y$ P9 Z: J7 ?5 {3 l- _) ^: M% d! P) r& v5 R5 D2 `
;check mono bmp file. N% |3 n" S/ b( Q5 r7 D/ R" V* @
        if(!equal(pixel 0x01) then
( A5 f' ]4 [- r                MessageForm("*ERROR* only supports mono bmp files")
6 D2 m9 Y! a/ i                return()
  _& i! f1 J/ C        )
* s3 c7 T/ H$ K- O7 |; d% u% C7 M& ^0 y/ |& o
;BMP2LAY( s* m( ^& U  T# U  q
        max_column = ImageSize/height<<3
$ w9 c& M  [6 J4 t: A% o        number = offset+ImageSize-1: M/ `6 K) Z* @3 h

; ]# G6 z% M2 N- _4 {        for(Wnum offset number
6 v) E2 F# t0 t' x& f' g+ Y5 W+ E/ H                row = fix((Wnum-offset)/(max_column>>3))+ q/ c, K) x, b# ~& U8 X3 W+ M) H9 p  M
                y = Grid*row$ G" `2 |+ W1 \2 x+ I6 d( v
( g! N- C8 b  _/ e
                for(i 0 74 E, h; I3 u9 ~
                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>( g; P0 x$ P. q# b! T
                        x = Grid*column
1 v% x% C8 P& l, X$ r6 Y/ H                        if(zerop(dot) && column<width then
# C; H$ ]6 v* F3 [1 ]7 c9 q                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))
0 p. {( h6 S9 P6 q: \6 j& S. k                        )6 Z$ i5 e" j; x& x! }
                        column++0 z' ?5 A  B1 m; `" G
                );for9 e8 }4 k5 x0 u9 K
                if(equal(column max_column)        column=0)
7 B- d, _: F+ i- j& ]: n9 F                Wnum++- s$ G3 K+ j) L4 t5 t
        );for
5 T( L+ {4 z( N. b& U4 Y5 r& D+ i- `, K# P
        hiZoomIn(win list(-10:-10 x+10:y+10))
6 a; J9 P1 {, S0 C        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
7 T9 d7 p7 x& H8 v  ]8 e* a);let
" M! w- E. b' H3 T2 ^8 }2 S! ^; m' L6 w4 p
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-20 05:45 AM , Processed in 0.108014 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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