掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

[工具] (20200512彩色版Release)_制作图片字典工具的试作

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新& O: U1 c+ n# j7 Z" Y3 C/ S

' H/ J# Y8 w9 M& _4 h>套索功能
; R7 T) f9 j) ?1 R5 Y) _0 ^; Q7 K' Y
修正在词条的下方有很大的空白  L1 L$ T9 @" x/ o, a+ B) j5 M# i

; a& B3 ^# K; J# V5 k线条再细些

该用户从未签到

发表于 2016-5-22 00:22:14 来自手机 | 显示全部楼层
支持!我有一些不成熟的想法,不知是否可行: 1、(抱歉我可能看得不够仔细,有错请谅解)楼主是不是先选中词条再裁剪图片?是否可以加一种模式,先把图片上所有的词条框选好做上标记,然后在浏览词条时一个一个选。这样可能会提高效率。当然,重要的是为我要说的第二点做准备。 2、众所周知,mdx的词条是没有分级的,但对于汉语词典来说,字以及其下的词之间还是有联系的。为何不在截图时加上分级系统?即在截图时,按住某个键,那么此时截得图就被记录为主图的一个分图(生成个文件,专门记录图片间分级关系),这样在处理文本时,可方便调用(如:①在字的词条下生成词的超链接。②高度模板化,做一个引用模板,在字的词条下也调用对应的词,不过通过代码实现折叠现实,就像oald9那样。③系统性存好分级关系,让制作者自己发挥)。不仅汉语词典,在截图时把每个大的分级都标上号,便可实现安原书顺序浏览词条了(加超链接实现,或最后做完后安编号顺序排列源文件,用最新版mdxbuild生成)。 3、待续…… 最后还是感谢楼主的付出。待工具完善后,用mdict看图片版词典就太完美了,没有这工具制作都是大问题! 我表达的可能有些混乱了,实现不了也无伤大雅,毕竟楼主把工具做成现在这样已经是非常大的福利了,我们这些享受奉献的没有权利要求奉献者按我们的意思来!

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
% t, c: `3 s0 i2 ~% {# Q

# ?( {4 O. l9 M; ?7 O. w解压ZIP:5 o, Q& w: {5 K" J; }
. _# U- ~5 O" L
TEST.html 可以用浏览器查看一下效果
# N2 t- o$ _/ K: }" }3 p* J: J( lTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!% M+ n* n7 c3 ]" n# \, r
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39$ ^- t. f5 w9 r: V( K: x$ [' N) z- Q
单纯给出坐标
/ a) E; A4 f8 T- t; }; g' c比如
4 o/ h/ m. [3 g' w3 z5 Ooffering#20,400
. P- f; V5 H: `! I$ r3 B
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
- B; B" _' }4 hmargin-top = 纵坐标百分比%
" o( w& d" Q# t  v; w------------------------6 X: r  i" k2 u
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python
    + N, b, Z& L8 W/ T4 \+ c
  2. # -*- coding: utf-8 -*-
    " o) r5 A* `# |4 A/ m6 H
  3. from Tkinter import *
    " Y& p  [) B6 J: A1 y9 g. |
  4. from tkFileDialog import askopenfilename
    9 {7 M0 {: j" ]; D
  5. from PIL import Image, ImageTk, l5 a9 g+ K1 N' K' V6 L
  6. 9 }- i! b! \5 K4 ]0 h' G, W5 m
  7. if __name__ == "__main__":
      [0 K. }# f( J6 Q* {/ u% H0 Z
  8.     root = Tk()
    ( ]/ L1 s1 l* i# @6 F
  9.     #setting up a tkinter canvas with scrollbars/ W7 ?7 w2 O& b
  10.     frame = Frame(root, bd=2, relief=SUNKEN); _7 ]' u  ]& K% |# w
  11.     frame.grid_rowconfigure(0, weight=1)4 H- y* u1 P- M) |; O
  12.     frame.grid_columnconfigure(0, weight=1)
    5 y, [5 O" n2 ~' x; E$ W+ x- v
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)  [6 G* i7 q% K# [
  14.     xscroll.grid(row=1, column=0, sticky=E+W)3 f# {( |0 F% T& q" H5 Q+ X
  15.     yscroll = Scrollbar(frame)8 L7 v4 Q8 i6 g6 M
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    6 y6 p* O8 y: {. j$ ^
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set), K, F7 D. h- U8 z
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    , F5 `+ o% {  U
  19.     xscroll.config(command=canvas.xview)( C# f- W/ d4 G$ i( `; u
  20.     yscroll.config(command=canvas.yview)6 v7 ?. d* a7 Y. U9 I' \; d
  21.     frame.pack(fill=BOTH,expand=1)
    ! x, N0 B2 o2 s' H" q

  22. 6 n9 _  J$ a4 z$ A
  23.     #adding the image& k; J& R- O: f& D$ X7 D
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')2 V1 l. O; A9 F! ^, P
  25.     img = ImageTk.PhotoImage(Image.open(File))" q: J1 T3 Y6 d, a) ?0 j
  26.     canvas.create_image(0,0,image=img,anchor="nw")! f& v5 f* s% k9 v  \6 y
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
    & s9 B0 N5 d% E' R% d

  28. : Y3 Y7 Z1 j& j. L" `! L/ R) I
  29.     #function to be called when mouse is clicked
    - M# \* N5 j2 K( m
  30.     def printcoords(event):
      H; w+ X( W" E1 h
  31.         #outputting x and y coords to console( [" u0 \% h0 e
  32.         canvas = event.widget
      o0 l: Y0 e" E+ w" H, b: b+ ^
  33.         x = canvas.canvasx(event.x)
    $ u' r! e8 T# [
  34.         y = canvas.canvasy(event.y)
    ! G6 F$ m% B2 Q& m; T
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")1 Y, S) g1 R/ u& k1 ^/ t! `
  36.         print x,y& a- \6 a& I) L
  37.         f = open('_coords.txt','a')0 T3 ], M& M- Y
  38.         f.write('X: %s\tY: %s\n' % (x,y))
    ( y' P& W5 K$ k- ~1 \! Z0 z
  39.         f.close()
    , ^1 O3 G: \- Z
  40. . E; k5 q" y" j+ u0 k$ _2 a
  41.     #mouseclick event& z8 Y5 }* F3 J: k
  42.     canvas.bind("<Button 1>",printcoords)
    & {& o$ S9 m8 d" U
  43.     root.mainloop()# R+ _5 Y6 M" h" ]+ N' {
复制代码
) M8 D" [5 m  Y9 m; b3 W0 z9 o
% I9 @. Q; v7 w
来源处:
5 y+ F9 J. Y  X+ q; f7 l/ }( {http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52
" N0 N; E; P1 T- L0 z解压ZIP:# S' g; F/ b( h* S8 X
8 n# @4 R3 x* B9 ?% V) Y+ H9 X
TEST.html 可以用浏览器查看一下效果
4 M. a8 \5 F( O# x1 U
基本了解
% M# Q. s- k- Acss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
5 g( }4 d1 h$ F3 `8 J
chigre3 发表于 2016-5-22 00:58* ?: L4 }: H5 C0 D
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
1 S- q2 _: w) t5 Dmargin-top = 纵坐标百分比%) ?4 \5 a& j0 A3 ~" ^6 ]1 ^
------------- ...

1 b' t7 M, Z. e  B' t, v- l6 C. g: j5 z% A, D/ ?) ~7 N
3200x50007 L9 k5 n3 E! N6 a$ c! y4 z* W: F
y=2500
" i$ I) a( l/ p" S& N8 Bmargin-top=2500/3200*100=78.12%
; _( c% l. n( ^6 T6 W# H* s3 P
4 d0 m( D+ Y( Z9 I9 z" P) n: I, u不知道如何理解这78.12%?
/ ]) |1 I& c% Y; d
$ ^! `* h: W3 H$ n1 V$ Q7 o% U  b8 z! H( i; H: p! f  `
margin-left的算法?
$ E. G0 B5 l% O" b; B1 b0 M2 b+ \+ e; |# h- J# u3 z# M+ o" q

8 E+ y3 h2 E" O1 i

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确" Q2 ?6 ]7 P- ?! P( M
比如两栏的词典:5 N9 n. w; Z+ R1 T/ T( S2 h
1)输入分栏的三条竖线位置,估计只有个别页面需要调整
% D" T( Y" e) E, e& k6 M2)只需手工画出词与词之间的分割横线。
3 q6 }% j7 c7 G- N再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形. n, a9 |6 [3 F! e2 W
3)每章划分词条完毕,一次性切割图形0 u2 c: H6 E/ q* F( L* D

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 # \( r- }! j2 }+ s5 w
vbnet 发表于 2016-5-21 23:02
/ R. j" Y  V! ?$ z& a& ?>固定框无法向图片下方移动。

) b5 J- J/ d/ q( \) A  O9 C" Z/ @, t# N3 q3 `' z
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
: t4 B: e5 i8 K6 t" J& x

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
6 k1 t& T" Q7 y  G固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

: ]! w, e+ @$ H# Z- Z. Q改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
4 L' l3 `+ F9 Y0 p0 I8 \$ p& x
( t' {' S$ D" H! X" K% F. e>固定框功能! u/ @9 s: u& O  k/ ~  a( N

' ^8 [, Z' a: [, q& ~- g修正卷轴下拉后,不能往下拖动的情况
0 `' L" n+ r2 X. t! E$ A
8 \5 c- Q2 h4 ]1 h7 J4 i' _# m

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
$ q8 z7 |. Y1 g2 v3 g
chigre3 发表于 2016-5-21 07:29" u, L9 g4 V8 O5 O6 Y
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。
3 G* r/ y7 w4 A9 }
5 X/ G9 j$ b7 K+ ~
这样方式如何' [! j! C6 P% K( ]  U: ^
+ j4 ?0 y$ P( \& P
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方
5 V' ?* \: r8 \2 ^& p# |
% B  S, m  Z5 _点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
1 K5 b( U& C8 ^% l5 S3 V. Z往后只点图片
6 y9 f2 Q" V/ K# _- f: X( D% U4 s* g" ]2 C( F3 f

( R# Z& e: k0 i) ^还是加入公式算出%?& n) L% _& C1 n- h3 J  U; l! t
% d) ?/ I3 C- k; p/ V/ H
" u+ L: N+ {. [. F; c
# o5 E% I, a3 i8 @  h5 j
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?: C8 w( N8 ~0 s" |% ]+ m" A9 Z

0 H$ P+ v) r. c/ N' N( I# K. g" ]: \9 U& A4 n) I0 C5 d' [, P- ~
0 K3 A4 e) _3 D, r5 D/ Q
如附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:411 y8 ?6 P& y$ Q" V4 @4 _" S+ z" l: T
2016022更新, U% A" {( M- x2 h- \

' c8 A" t% p5 f+ u- x/ y7 y>固定框功能
9 K: A1 }$ J; V: K) d2 E+ ?
完全正常了,效率好高,大赞赞赞赞!!!
  s* P" r! d2 ~. j$ M期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:525 @- l: m" j. l% s5 B
这样方式如何. {# I# J0 ?: K" W; L" F

; U5 C; }9 q0 D" b( t# ?开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
* B5 E8 J! d& Z' N; D
整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38. b  Z8 E6 I1 f
完全正常了,效率好高,大赞赞赞赞!!!
& S4 D1 A& h- [* }% q* B- V期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

( D7 J& t3 A; V: H想法6 M% i+ \2 ^0 i& l  |  J, p3 |" ^
a,b,c,d指向同一张图
- Y0 S4 |5 ?, e0 j) aa词存图,设a为跳转目标,b,c,d指向a
2 }( \5 j2 Y+ d& C  q' D$ `* P------产生对照表---------------* O5 T; ?+ Y9 I9 c
b#a# c. n4 o5 k  @$ G
c#a
1 {6 i) g  h3 `! qd#a/ X& e  T+ v5 v# p3 t2 U
--------------------------------------------------------" ?" I" q5 ~* |$ U$ n) ]9 p, r4 \2 T
寻找:
6 B6 i) q" T. S0 w; r' O(^.*)#(.*$)+ s* y' B$ h' t* D
取代为:+ a- [; t7 }6 e% T" h
\1\r\n@@@LINK=\2\r\n</>, J% v9 Y# t2 \- y1 D- H) H6 S) s( w
-------------------------------$ T* J4 L+ T) F; ]4 G' Y9 T
b
% T3 B# B6 s9 H* g8 }' }& e; X; ]@@@LINK=a
0 l) ~6 S5 ?' x' \</>% G- }! o. `2 K; u, e% Z' N5 c4 S
c: o# W2 q% _) V! u% d
@@@LINK=a
0 ^: ^, E! B' p* I</>
! H: m* O' _* q! a5 yd
+ J2 x  O) |6 r# g@@@LINK=a$ A5 ~# ?. j1 P0 i( R
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
1 W" w+ K5 A( H5 m2 Y# s: q, G3 _1 b5 z- t这样方式如何
8 h  p$ ^" O* J; x
$ [' b" r  ]- J8 s' v/ ]/ {: d开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

0 c) P3 W6 a3 U" r# q这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
7 v/ U6 P. [/ Z5 m+ m这样方式如何$ T- w1 J8 u% ^. Q! ?" j

* b  o0 E1 R" U5 v# }  ?% l  F$ B9 u9 d开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

, x" [* H: |2 e1 h- x4 a默认的情况下就是你说的这样。$ n" r. j+ t% |5 k2 \! m
之前的测试文件还在吧?% n4 O/ s6 Y5 Z! X/ y- W
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。* ]/ j: M0 x; ^* ^
单击这儿的数字,会自动跳到垂直 位置
* Y" w# v) _- `' V/ z单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
9 j7 ?7 q% v* u" ~这样方式如何1 g6 m8 y% Y$ b: z
9 }0 x. y5 ?7 E* c1 B. c" {: F# c
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
- B' d" A6 S6 t) j% ^
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31
* S$ d+ _% U* V+ j( j这个可以测试吗?
# z9 t" Z3 Y3 H$ r
用法如上所述

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00' X# `, N6 N* a7 |# V  L
最初加载的words列表如果也有极少的缺词可以手工加入吗?
. n6 _5 ^2 e2 `( H
要等更新. H% W" E+ X# g
用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
# ], L+ r4 @/ N! R0 y用法如上所述
3 G; n  h/ z) V& b5 P
万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58
! D8 w" v) O( \0 k3 k! g默认的情况下就是你说的这样。" |- N( ?! i. i7 \4 J, }0 u; p
之前的测试文件还在吧?- Q- X- l* }6 L: y! E
输入YHCD_001,你会看到完整的该页词头索引,按 ...

+ K2 P% C; O- v' ~$ r2 J等你实际做几页,看看效果如何) E" ?/ Z3 B1 o9 J( d8 l; K1 l0 q

8 f& r: p! c% d1 O0 A) o8 s+ T

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11  {/ S8 r% A( g5 v8 S
用法如上所述
4 v. p+ I  Q; V( S' X
打开的图片文件名是否可以写入?" C# N. v9 u/ l3 K
这样方便后期编辑。7 t  {2 V) t& [; B4 ^3 ^
----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
+ N: |! J1 Z0 b" g; {* m- C想法
; l0 d4 V6 @/ r0 [- `) F1 {1 k+ z; ya,b,c,d指向同一张图: U. v; t5 f# j+ B. A( R$ o, H
a词存图,设a为跳转目标,b,c,d指向a
( J3 F( p- Q6 M' a, m$ `
想法好!集成到程序自动完成就超级棒了。
2 s1 F+ |, e6 O% r; T6 ^不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。: v  N/ e) d0 d' G! U0 `

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

小黑屋|手机版|Archiver|PDAWIKI |网站地图

GMT+8, 2024-6-7 05:57 , Processed in 0.093710 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表