Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 關於BMP轉logo

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-5-7 10:16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好
9 C- s5 N1 h( o1 L% p0 j3 M  F6 }$ `
( c6 t- w" d, F以下是skill
& G) d7 j! [8 v& f+ q8 j2 z; qlet((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column
+ G( E! n( k. J) @' ]* ^$ F. I' t        i dot x y signature offset width height pixel ImageSize )
7 z% C/ W" s4 `+ d5 ^" n% I- ~6 t$ M
! w. @; v7 z5 I2 M7 D6 Q        win = hiGetCurrentWindow()- N4 Y. K" y' i6 Y& c  J8 a( F8 ?
        cv = getEditRep(win)8 C8 w5 K/ z2 ]' o3 I" R
: t$ z- V+ u* w8 ~+ Z
        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File! D0 C( S7 S0 `, |9 L& \) \
        Layer = list("TTOPME" "drawing")        ;;; Output Layer0 q: {, M& p0 w: Y2 n! {
        Grid = 1                                ;;; Rectangle Size  U9 N- t) Z+ k# `: U
        column = 0) e- P+ y9 c. u. C
2 n3 _1 x1 s& x& m
procedure(MessageForm(text)1 ?  v) `! p7 B7 [9 ]
    prog( ()
% n; p# W' l2 i$ G/ b" e- B        hiDisplayAppDBox(
! y5 A& e7 c( H3 c6 y                ?name 'JWDBox_Message
; p' u5 V1 Z5 S# ~# x# p3 [' g                ?dboxBanner "Message!!"
4 V2 h8 H; t, v" P* F$ U  ]$ |                ?buttonLayout 'Close) [& k5 C! W; M4 D1 c. Y: @* K$ W% o
                ?dboxText text
4 W; m1 C+ B$ y3 A        )2 w, A- }; N' o- A1 \
    );prog
' v* Y, {6 o' k! j);procedure
/ `7 V+ n# l% I! U) W
& H0 Y+ Y, i4 [, O: s;Read BMP file
# f/ V) G8 R9 u6 z        if(InFile = infile(bmpfile) then
- G* b8 K" H* b3 Q7 N# {                bmpSize = fileLength(bmpfile)! i6 `( R) e- j' p' q0 M
                declare(WORD[bmpSize])
  E" v7 I6 O4 V" g6 U                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) )9 X7 z5 g2 z3 W! f* Y5 _$ b* m" F
                close(InFile)) \$ a# q7 \0 h
        else3 C3 f! f# K1 N: T6 B9 j7 J) S* P3 V
                MessageForm("Input file does not exist!")
; c; f' ~: g% c5 _- `- @$ A* W1 M                return()
; {% U# H5 ^! x/ T        )
* e  e: D7 \3 y, u
( v) P) z% G/ {* D        sprintf(signature "%02x%02x" WORD[0] WORD[1])- X, `9 Q2 n# e" \, i" ]7 x: a: a
        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a] $ N  N9 D. }' ^! |/ t4 {
        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
8 @6 D; r+ B# _3 d. O9 i9 P9 r        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]; \  C. Z! L. D  @" z6 q/ B' N
        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]
) M  r$ m- Y$ X! G, N1 ~        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22], H- ^, m' p' f/ r# ^7 V, B8 a7 q
; Q: Y: S( d( D8 F7 g/ f
        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())& @  \, s! [' T6 O
        printf("offset  : 0x%x \n" offset)4 V  ~& C8 r- Y- |: ~
        printf("width   : 0x%x \n" width); d) _+ _( K9 G7 z$ t* a( T* [0 ?
        printf("height  : 0x%x \n" height)
! y- J0 H4 s3 W  P' a+ a        printf("ImgSize : 0x%x \n" ImageSize)% o# m) }; R, o: |' g9 l7 }" S

. f3 `3 a; \2 Q! r2 l;check bmp file
$ J0 i! e/ `5 @" g        if(!equal(signature "424d") then
9 ]6 V6 a0 j' H/ t1 o( }$ c5 s                MessageForm("*ERROR* Standard Input is not a BMP file")7 K7 p( _" N, E
                return()/ q# I- e0 I; r) ], Z. E
        )
3 i7 D9 f3 u2 Q; `. P. ?# G
* l- l6 W. J/ ]# C;check mono bmp file$ ~8 ]5 L- D1 v. _
        if(!equal(pixel 0x01) then6 k& U$ S. A  u( F) u2 t5 p
                MessageForm("*ERROR* only supports mono bmp files")  P4 s+ @. c* ^, p& i, x4 Y
                return()
6 p6 G  |' d! m6 `7 `        )! i$ q; v3 b- a* A9 X9 U

; Z5 I6 v3 j3 u: A;BMP2LAY
& |# z( y3 y1 K9 r! V3 C  v" k+ j        max_column = ImageSize/height<<3
% Z4 Z5 V2 D  _6 \        number = offset+ImageSize-17 H+ ^& B3 |8 A& I, h  E$ t
& a6 A% h8 u+ Q6 ~& y) Z
        for(Wnum offset number
2 a, k* ~- L/ O; I                row = fix((Wnum-offset)/(max_column>>3))
. r; k0 {2 |$ K  z- B" |4 a                y = Grid*row
1 d- Y1 u+ I) E! X/ g. ]* ^0 b$ ~" `7 q0 H) G& U
                for(i 0 7
8 e/ Z1 Q: ~/ @, [# y                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>2 u& s/ b+ I9 n1 }9 s
                        x = Grid*column
; ]+ e4 J/ z1 b  R  J+ L0 M  S                        if(zerop(dot) && column<width then
4 y) P/ a: ~  `: e# N                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))+ H' R0 s& Q# A% E! g0 P
                        )
: M! R1 _8 o& ]3 T                        column++! h3 |+ F9 ^* [  x) T3 S, S+ j* \
                );for
  p: u/ k( @+ ?8 M0 f$ }) I. y0 x                if(equal(column max_column)        column=0)1 ~1 O' o" {, K9 b3 Z/ z0 k* D; `
                Wnum++0 p; a# n5 l% G  U. d3 f) B
        );for+ j4 F$ `8 G: j8 E# |/ c

) C4 K. P  z2 g) R; z        hiZoomIn(win list(-10:-10 x+10:y+10))* I( ^  Q% l( d" b/ @- J. i' {- v
        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())  ?" v: ^; l- E. |( J% }8 X6 E
);let7 c+ O7 H9 l8 c, F6 I
! H  P# r( s+ W% F
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-21 01:27 PM , Processed in 0.106513 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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