Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 關於BMP轉logo

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

5 {! }/ v  L+ L7 r+ W# P以下是skill  B" B7 X( X3 M7 l$ V& H
let((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column0 \/ l1 ]# k  `5 _5 x6 Y' R
        i dot x y signature offset width height pixel ImageSize )
6 }% I5 F$ c! h5 E
4 s2 O2 A. t; A6 [* [$ z        win = hiGetCurrentWindow()" D1 t' H7 X( v! a  L
        cv = getEditRep(win)
3 i6 ^: H5 V( q8 o6 H+ D( L  K$ l+ b2 Z+ ]1 y& ^
        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File
3 O: T/ b4 Y5 T/ H$ U8 x/ F0 e        Layer = list("TTOPME" "drawing")        ;;; Output Layer  t  w6 S7 |6 M2 Z+ N" T
        Grid = 1                                ;;; Rectangle Size
; J7 a% a# j0 c2 m% d2 J  C' k        column = 0
2 z6 t" I: _: p6 o  Z9 }5 f. [0 Y7 l/ g3 S0 A: G
procedure(MessageForm(text)( o: k7 C3 E! C8 y+ C4 K" V7 K
    prog( ()
- `% @  d& q  F$ z        hiDisplayAppDBox(7 o: |  F  L' `# r- q9 b: b
                ?name 'JWDBox_Message* v$ l. b* E/ Y" C
                ?dboxBanner "Message!!"
+ Y& I- O6 R8 u3 o                ?buttonLayout 'Close. b6 ]+ r* F$ M* O7 t( h% f
                ?dboxText text
& z0 t( Q5 d! z4 u; T        )4 @7 _  s3 ]+ H' g0 ^
    );prog7 S/ T. M0 Q& |! ?
);procedure
; w  S, k- c$ m- t, }3 m- ?; p- R2 c' E! A( G
;Read BMP file
  b$ P6 }2 u$ X! a$ T' I$ _' D        if(InFile = infile(bmpfile) then
  `1 }8 J4 e+ y) N                bmpSize = fileLength(bmpfile)( K4 K" ]& d% U) u, i" i5 z' `
                declare(WORD[bmpSize])
% T1 J0 X  U, C0 c9 m- w2 O2 Z                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) )
2 E& j" J; o: C+ d                close(InFile)6 U' N" H: ]- t3 x3 T
        else, X3 L1 f: F, d9 v: b7 L5 R
                MessageForm("Input file does not exist!")) X0 R8 q7 T) l- |) d& x3 P* V
                return()
- B; z6 h. t; ?( W( V9 x        )
4 Z. l% f# G1 C; A& F
4 f0 v, N4 y  R8 r% F        sprintf(signature "%02x%02x" WORD[0] WORD[1])
' f9 Z* ]8 ^2 G- y  ^7 }( ^        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a]
+ T! V! G/ G2 K( F2 Q/ `* d        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
. f/ |: |& l$ }( z( y        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
; l" J+ t6 P% `) y        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]. j# n5 H/ l5 G. t! l9 X1 J
        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]
3 G* T$ @- u9 P. {  k* z6 L" M) P8 n6 x* @2 L, r$ c
        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
- B9 b# j' g( L" f" ]        printf("offset  : 0x%x \n" offset)8 j/ }5 l" J# l' N0 U( F4 t
        printf("width   : 0x%x \n" width)' T0 A% C1 D# x1 R
        printf("height  : 0x%x \n" height)
' c6 g$ Y! O7 S0 }/ X2 x        printf("ImgSize : 0x%x \n" ImageSize)0 L2 A% D3 z6 }3 _7 w8 ?

9 M1 h) z5 T' E, ]( A. Y;check bmp file) I  R# [7 H: M& F
        if(!equal(signature "424d") then: O( c1 R6 g" }! R; l0 {
                MessageForm("*ERROR* Standard Input is not a BMP file")
# \0 z. l. m/ b& |6 s3 }" i                return(): f( P7 n3 |* k$ Q! L
        )
# K# Y/ M2 u/ O8 J; c* Q+ g- F! A* C% a
;check mono bmp file
  l# Z" q3 B; }$ i8 E3 k        if(!equal(pixel 0x01) then
# ?* }; h  s7 V. {( e                MessageForm("*ERROR* only supports mono bmp files")
7 y9 A: F$ E! `; c                return()1 X3 P8 v2 l7 K& B3 f3 T2 s; i
        )
% M% [( |2 ]4 t2 p& _
% T% t1 G( O" j% |, W7 Z( k0 B;BMP2LAY
( v; T# @/ ]6 U# z9 f# M2 G        max_column = ImageSize/height<<3$ ^4 X! N7 J2 n1 U  N5 H
        number = offset+ImageSize-10 M4 ~% w7 g: h) ]; U
- v$ |/ C! Q: G3 q' {: _! k
        for(Wnum offset number  Z# _# l9 b; D& h* Y7 a5 }( j
                row = fix((Wnum-offset)/(max_column>>3))
% G& P) ]0 z  I2 v; t                y = Grid*row5 O! S( p1 P* H6 C
  F  M! ^, o% v' P7 d
                for(i 0 7+ O2 V- A6 L% s- [; d
                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>6 `' {, D2 X# {
                        x = Grid*column
4 g2 u* D6 d5 j+ W: I                        if(zerop(dot) && column<width then; B( }3 ^* F& i& r* W2 b
                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))
+ K' @$ @+ c0 O4 Z                        )( W3 D1 S0 P0 U* R/ i' ?; ]" S
                        column++
3 S$ e; M1 S9 R0 b                );for3 ~1 Z  ~: F. |& i: }( y, v
                if(equal(column max_column)        column=0)! e- D2 P4 Q* ^" N  J1 P
                Wnum++
" j0 ~1 ~( H( _! j* `' y9 g        );for
, h9 u1 J2 \* |5 v& W- S0 D" d6 P. Q+ e$ S6 e0 z% c
        hiZoomIn(win list(-10:-10 x+10:y+10))3 u. ]6 g& b. |2 \6 n4 _2 s1 ~
        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
  k/ S$ o4 c/ t9 R: ?  A);let
, _( V* z5 L! ?6 p$ m, W& S3 d' @! ]' I( \) N
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-2-23 12:53 AM , Processed in 0.158009 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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