Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 關於BMP轉logo

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-5-7 10:16:51 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好( q0 f$ O! K8 l' N+ L+ v, z
, I6 h& X. K5 C. v) ~  P
以下是skill
1 u/ [1 e3 [; ]" Llet((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column* c( e# {5 \) a0 K8 h
        i dot x y signature offset width height pixel ImageSize )
% }3 e6 T' ~2 |% r* E
5 q0 |( F% S& l4 p% j, \4 m        win = hiGetCurrentWindow()& b0 j) M$ k4 q  I, J- e2 h) Z
        cv = getEditRep(win)6 J' v# m4 Q0 ~$ }1 n5 v) x3 ~
; \9 \9 b5 C) H0 p2 x7 a" F
        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File
" G) r% d/ G" n/ Z8 ?- m5 r, j        Layer = list("TTOPME" "drawing")        ;;; Output Layer; M: l6 A4 T' h1 \3 _
        Grid = 1                                ;;; Rectangle Size: H+ R: H! B+ T* W1 a/ P
        column = 0
6 \  f" C' U7 v5 E9 u! Y8 {1 w! D
procedure(MessageForm(text)( D2 y9 k  Z. J8 q' W# {  z
    prog( ()
* O& {1 S& v, ~6 S% d  c1 R        hiDisplayAppDBox(3 h2 C6 [2 ~( x( _, J- T
                ?name 'JWDBox_Message
$ f! y1 P, X! G9 [5 O                ?dboxBanner "Message!!"
" _$ {5 a+ E; }                ?buttonLayout 'Close
4 w/ o. P, h2 T: |5 t9 P                ?dboxText text- o* u1 w; c9 g, R, f+ O3 }# H/ G
        )% A/ P: m5 W' `( b/ w
    );prog1 o9 O8 I! `% L/ m3 N& w4 O$ Y
);procedure
+ a& r% N$ U' O: q2 a6 `
" T% E( \, V5 U4 N1 k;Read BMP file3 l" \. R2 ?! I) Y! T
        if(InFile = infile(bmpfile) then
3 v5 p. a" V1 d4 b2 m# Y' i                bmpSize = fileLength(bmpfile)
6 I( ]: s6 Z8 U* {% [3 d                declare(WORD[bmpSize])
% U) Q* K) i6 k3 k: d5 s1 i- P                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) ). J* f; w) W0 N$ u+ i
                close(InFile)
7 `! M4 [5 [/ O, v1 v# H+ K* u        else/ ~1 t2 T+ E1 `- Q8 g! @. i
                MessageForm("Input file does not exist!")
+ _: ^9 |' m  X: J$ f/ |: z                return()
1 T4 y: L2 I4 s        )
5 P, L7 S" d2 f& V. }
2 q9 a/ |8 r5 a+ `* }        sprintf(signature "%02x%02x" WORD[0] WORD[1])& J9 p$ [0 ?- H: F4 f) M
        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a]
! e- b* M& R% ^# ]  b' e        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]
4 W6 j. D; x% l8 B" q% R& |        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]* ^. E0 l7 D& }0 Y5 i
        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]
% M& v5 f7 Q+ h. L; I% ]0 S4 b: @        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]- R- `/ B5 G5 f2 A8 |& @- J
5 d: G% C0 e/ Y8 F! v$ ^6 T
        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())
: k$ v% S1 A$ p2 f; _& Z* j7 @' W        printf("offset  : 0x%x \n" offset)1 i+ b- m  Y# Q
        printf("width   : 0x%x \n" width)0 E+ }) `  k" Q3 r. p  o: Z$ A) `
        printf("height  : 0x%x \n" height)5 N, G1 D; d; I
        printf("ImgSize : 0x%x \n" ImageSize)5 u* c8 R/ E2 h/ `) b5 W  K7 v

$ T8 R* ~$ T* M;check bmp file
6 O8 ]5 ]) y  P+ P7 _" d& d        if(!equal(signature "424d") then" h( D; {$ |/ u4 z% ^8 r6 o
                MessageForm("*ERROR* Standard Input is not a BMP file")
: K* ]* @, k6 s) B" \                return()
5 U8 \' [5 \& L- h, G        )1 I. x7 Z- j) T: \1 H" \) M
( S: Q( p. A8 o& f$ n
;check mono bmp file6 u- i! y* e- v; Q( w
        if(!equal(pixel 0x01) then5 x3 Z  d, s$ d; h; W7 t
                MessageForm("*ERROR* only supports mono bmp files")
6 h  _( @$ G5 `3 g" U" S; o                return()$ Q  a: R2 {9 @6 [8 E* Y
        )
- H8 w/ V, ?* E) |" z# K. y; d1 w* T5 |
;BMP2LAY
& |" ^( \9 Y' h' e        max_column = ImageSize/height<<3% a. |$ i" @; |8 b
        number = offset+ImageSize-1" E* s4 P# ]2 A- m7 z& P: G

6 S* r5 T. F9 ?7 I( d        for(Wnum offset number# B* n' `% j/ r: e2 T% t
                row = fix((Wnum-offset)/(max_column>>3))
& A; V* I$ H* }9 T3 Q                y = Grid*row/ T; }& {1 z) U' a% u0 T8 [
& F& N, ]% R7 e( s0 g. G$ V6 U
                for(i 0 7, F4 H" w/ B& M& R  n
                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>; q, x' a! R* K" C; H
                        x = Grid*column, ?8 d- q2 k0 a
                        if(zerop(dot) && column<width then
2 {9 W! x- k9 P, Z3 \                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))
! g3 a1 h4 X+ [' @                        ), _' r+ G; ]9 I) y) Z$ |( {5 i
                        column++5 N0 E9 {) a6 k/ o' n, X
                );for
' ^& e' _6 E  n                if(equal(column max_column)        column=0)
% e: }5 o4 B6 ^  Q! @                Wnum++& k/ C6 r6 \; G4 W/ j
        );for
8 M' y9 g! N, |+ n5 v- d
2 {2 ^5 v- W6 _        hiZoomIn(win list(-10:-10 x+10:y+10)), k( D; U! y4 q# ]# E2 |- j
        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())" h1 S0 N* z& `5 `; o% c
);let, V% o. n$ Z1 l8 ?9 K

* @& c( q8 p, u# @
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-30 12:04 AM , Processed in 0.105014 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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