Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 關於BMP轉logo

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-5-7 10:16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問大家layout logo是怎麽做得,感覺BMP 單色位轉成layout效果不好,如果采用這個方法要每個字母做成一個cell,然後還要load一個可以自動縮放的script,而且轉成單色位圖片會有很嚴重的毛邊,轉出來會很難看,所以是怎麽做比較好' K. Z" ~. F6 h" l8 @6 w+ @
" X4 N5 G% d- A  l) z
以下是skill
9 a0 I, t* Q- D" P. ]let((win cv bmpfile bmpSize WORD Wnum number Grid Layer row column max_column
) C% l: T$ k3 G% S3 o/ j        i dot x y signature offset width height pixel ImageSize )
# L! Z: B: C( q5 ], v
: V7 \8 }, j- a) U/ l  J9 [+ z9 i        win = hiGetCurrentWindow(). ]; |1 x; x+ F/ s
        cv = getEditRep(win)4 m9 f9 ~) P- I" r6 l- C
! y2 M+ V' x! M9 L
        bmpfile = "~/number_mini.bmp"                        ;;; Input BMP File# j3 K# K$ l: g8 U
        Layer = list("TTOPME" "drawing")        ;;; Output Layer
* q/ D# e5 W9 I% F        Grid = 1                                ;;; Rectangle Size3 f% k. s$ K5 o) p
        column = 0: ~9 C5 N+ t- t: _0 k' x

: @+ x# x0 M' Fprocedure(MessageForm(text)
8 k) U/ w: c# e- I    prog( ()
& u* S" \' ^9 C! _1 o        hiDisplayAppDBox(! c8 |0 ]8 G8 ?4 F6 m3 n
                ?name 'JWDBox_Message
% T9 W  ~# d3 l                ?dboxBanner "Message!!"
+ B& I* G8 P8 P' c+ b8 K% u; v                ?buttonLayout 'Close
8 h- H# f/ x, w' B) n                ?dboxText text
1 T* O0 N+ D' x" H$ \        )9 ?5 t8 Y8 Y- U5 {5 u( S
    );prog
" C& L. V  c( o- W);procedure
! f+ Y3 G5 m' c' R5 r# m2 N, {; P' w9 O, O$ B- W! d
;Read BMP file
& S7 _% J  q; v" |) g- _' v        if(InFile = infile(bmpfile) then* V4 d6 G9 `  n
                bmpSize = fileLength(bmpfile)
- k- G! A: O% q' t6 r2 ]) Y; l/ N" F8 }                declare(WORD[bmpSize])
8 ?+ ?# G' p0 B6 |: X7 {                for(Wnum 0 bmpSize-1        WORD[Wnum] = charToInt(getc(InFile)) )
- Z+ k2 J; o6 H+ a5 e                close(InFile)
/ i, q, }5 A) y' E/ Z        else% k) v6 H1 h* t: h( z8 Y
                MessageForm("Input file does not exist!")
; F  O7 K- |9 f) e: W. |, [                return()
+ c! J  _1 N" O" H" S  F        )
5 L5 ?0 \# D/ J' J" A- Y  k3 [* G4 R4 n5 D6 r# `1 b5 L" A: }
        sprintf(signature "%02x%02x" WORD[0] WORD[1])5 N6 U0 R; \% q8 C% }3 U
        offset = (WORD[0x0d]<<24) + (WORD[0x0c]<<16) + (WORD[0x0b]<<8) + WORD[0x0a] + ?3 G1 @3 _# C4 x5 S
        width  = (WORD[0x15]<<24) + (WORD[0x14]<<16) + (WORD[0x13]<<8) + WORD[0x12]8 u8 o! Y% }4 A: ?8 f
        height = (WORD[0x19]<<24) + (WORD[0x18]<<16) + (WORD[0x17]<<8) + WORD[0x16]
- D. z) K' u, l' y) D7 b+ c( R        pixel  = (WORD[0x1d]<<8) + WORD[0x1c]
' c- z; v$ h, N1 |* S        ImageSize = (WORD[0x25]<<24) + (WORD[0x24]<<16) + (WORD[0x23]<<8) + WORD[0x22]
/ S- |! r/ J6 k. `  G- g2 K: ~0 j. \# B/ Y+ D& l" z2 w
        printf("--- BMP2LAY Start --- %L\n" getCurrentTime())5 P" o% p: ]' s) x$ z
        printf("offset  : 0x%x \n" offset)
8 ]$ j* u: F) A. t/ S6 U% S        printf("width   : 0x%x \n" width)
; z. |% N4 e( G9 T$ b6 z        printf("height  : 0x%x \n" height)/ \8 q9 y, j* D; G0 _
        printf("ImgSize : 0x%x \n" ImageSize)
  B/ j# d! s7 g* Y
, g8 `- c' j3 G: s, F1 h$ P;check bmp file7 L! H0 W1 \' H0 c& [! H
        if(!equal(signature "424d") then
$ f/ |3 C  @0 Q3 C9 N                MessageForm("*ERROR* Standard Input is not a BMP file")4 q* K3 @1 M; r7 `2 y) [
                return()
% A" a/ L: [2 H0 t: r        )/ \5 ~9 R- E% c/ |5 @' `7 K
0 l5 f$ Q( N1 i4 {/ R
;check mono bmp file
- V& R8 [& s0 l        if(!equal(pixel 0x01) then3 W6 ^" e6 J" y, `+ [( m  B* A/ Q, b
                MessageForm("*ERROR* only supports mono bmp files")
; \3 m" z: N6 K: k3 T& m9 S                return()8 c! p/ F8 H, b$ t2 \
        )0 W: n& H. R# J0 o

0 K$ z7 X" W# P+ L;BMP2LAY: g' m. N6 N( @3 g) A5 J& `, a
        max_column = ImageSize/height<<31 E1 m" T0 @; z0 W# }# w% Z% t# E
        number = offset+ImageSize-1' ^' w+ m( O. q1 y

' k; A4 C0 b0 T: e; u  O  _        for(Wnum offset number
. `: |! p; i8 P                row = fix((Wnum-offset)/(max_column>>3))
$ Y3 ~+ e9 v* B                y = Grid*row
  v8 e, |0 V, b/ |3 H' p' `
1 S7 {! [: i8 y2 ^: I+ g% b                for(i 0 7
& h  C6 e+ [5 C# X( I, o                        dot = bitfield1(WORD[Wnum] 7-i)                ; bit<7> ~ bit<0>- M5 p- I! a) H2 I
                        x = Grid*column3 {* }9 @2 r5 E$ d; m- e
                        if(zerop(dot) && column<width then
/ z+ k" F" X' J9 U  K2 b3 [                                geSelectObject(dbCreateRect(cv Layer list(x:y x+Grid:y+Grid)))8 \; k) j, d, j! u2 r# w6 s
                        )5 ]4 p6 u3 v1 b( `  i  Z( P7 J
                        column++
4 h, _0 p% i9 ~" f4 c& c. t( C                );for- l' L/ N9 |( n+ Y' q4 V
                if(equal(column max_column)        column=0)$ i  a( ^/ M7 \8 g/ g: Y8 y
                Wnum++
" V6 s* g* _: E% C; L" s9 W        );for) r, N8 ^1 E, H5 [1 }
# v. t6 u$ u4 }0 E
        hiZoomIn(win list(-10:-10 x+10:y+10)): B/ `" |- y" D* j3 e
        printf("--- BMP2LAY End ----- %L\nt\n" getCurrentTime())
( g  s0 _/ {8 V);let
" M1 u+ v# T" \* ^0 n3 A
0 ~8 B' N; H! E- U
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-20 01:18 AM , Processed in 0.102013 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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