掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新7 _, J+ ^* Q- p4 D/ |. I
0 D3 K0 ^( L. p8 S* J0 C5 k3 d
>套索功能% B: @3 V, u  Y0 `5 M
& y: R2 N3 g9 X4 _
修正在词条的下方有很大的空白  M4 L( P# W- s1 O$ J0 W4 S

, _- p, k4 U6 ~2 N" T- L7 Y线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
& ?' F$ X, ]) s
% m' K; n+ W9 k
解压ZIP:
% H$ T7 q' c. ?, ^
! s* ~+ R5 S9 V( [0 g2 ZTEST.html 可以用浏览器查看一下效果
6 t+ N8 ~, H  q& yTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!, C2 V& f+ M' g+ q; h
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
9 t, b& W6 o( `2 w单纯给出坐标$ ]$ p: h; }$ m+ f8 }. N
比如3 M; T% r$ O) d
offering#20,400
. e! C3 M% L+ f! d5 ]2 |; [5 |
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )3 z' Y! j/ [% R9 Z( `5 s- N
margin-top = 纵坐标百分比%
8 M$ a' p8 w% Y  B------------------------
6 A, u9 W( I7 f  l注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python
    & ?- P- L5 u* s7 J/ Z9 ]% F! W, g
  2. # -*- coding: utf-8 -*-! ]5 f' Y% @6 e
  3. from Tkinter import *, D9 ?9 W3 `4 n- _
  4. from tkFileDialog import askopenfilename0 t% [& i, ^) r& W+ v4 k/ U! D/ T( P
  5. from PIL import Image, ImageTk
    + Y# K) I0 A7 L9 E  z

  6. 8 W, a( e/ f- x7 D! ]; _
  7. if __name__ == "__main__":
    2 i' U- C+ v3 C- Q2 u
  8.     root = Tk()
    7 |* [) C4 P4 R9 Z' y+ W
  9.     #setting up a tkinter canvas with scrollbars
    5 V! y6 D' K: e0 A, T
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
    " A2 s! Y0 a4 U9 p
  11.     frame.grid_rowconfigure(0, weight=1)) E6 ~- K- ]% U$ C7 M6 q' e
  12.     frame.grid_columnconfigure(0, weight=1)  w' G) ?2 g' @* |( N
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    $ o+ m+ \8 z* F* B9 e( u
  14.     xscroll.grid(row=1, column=0, sticky=E+W)- @) c$ X% K- R( }* r
  15.     yscroll = Scrollbar(frame)5 `  I7 {# O* V- N" |* \' f
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    + o. l6 Y/ E) v9 T* s
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    ! V/ l. v1 W. Q
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)1 M& f( {2 y, v; B5 V
  19.     xscroll.config(command=canvas.xview)8 X8 r1 g' [! t% \& S8 B- w; I: E- N
  20.     yscroll.config(command=canvas.yview)
    * C! ~3 b" F( Z7 F; J9 i: ?* E3 q/ N8 c  b
  21.     frame.pack(fill=BOTH,expand=1)
    2 p! r2 c0 S) p% j
  22. ! S# h* t- _2 [
  23.     #adding the image
    6 g( j/ ~  j* `& c! A
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')& _1 v" |, ?3 A0 g$ Z1 v' f  R
  25.     img = ImageTk.PhotoImage(Image.open(File))
    ; E1 N, D* @0 f9 l2 Y" V0 R9 G
  26.     canvas.create_image(0,0,image=img,anchor="nw")" [. [, S# M0 y, [
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
    3 [) U" s9 E5 a) C% f
  28. * Y1 b% O2 D6 t" d" B! c8 z
  29.     #function to be called when mouse is clicked4 E2 T3 d) ?- c1 N; L& t* C
  30.     def printcoords(event):
    3 u; v. _2 V9 f
  31.         #outputting x and y coords to console
    " w' d6 D/ y9 r' k( S
  32.         canvas = event.widget' C% Z6 _' Q! E6 C# }0 g
  33.         x = canvas.canvasx(event.x)% ]& G: {; N6 T
  34.         y = canvas.canvasy(event.y)7 r  v" M% E9 z7 O3 S# \( I
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")# p  p2 ?0 b3 G$ S* f8 l: j
  36.         print x,y
    - n6 e& _0 P5 Z( C( H
  37.         f = open('_coords.txt','a')' l* _8 `$ W! x
  38.         f.write('X: %s\tY: %s\n' % (x,y))
    . ^2 I8 w; k8 {# O- g$ ~
  39.         f.close()
    & i, O2 m* m- X* Z8 Z, U2 U0 ?
  40. / H3 {2 U  t: P7 N
  41.     #mouseclick event
    ( G% q3 `8 I, d
  42.     canvas.bind("<Button 1>",printcoords)
    $ i9 G5 B6 _. V( Y
  43.     root.mainloop()
    / X3 g5 Z$ c# t+ Y+ f( k7 p' ^1 Q
复制代码

2 \# X2 C' A7 x4 P1 Q
) Q- G% X$ I. d& [. ~来源处:0 k; `; A' f: q" w8 T* Z- k$ K
http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:520 i. z7 B% Q0 r4 e7 _9 @- A  ^9 J$ w! V
解压ZIP:
* N3 N5 W/ f* J/ G6 w9 g7 E9 R/ @) M3 o
TEST.html 可以用浏览器查看一下效果

( O+ Q1 w" X8 K; W3 M: {! n1 Z; B基本了解
( J5 b, a, x' `+ [  dcss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑 9 @0 [$ {' U4 \5 b
chigre3 发表于 2016-5-22 00:58
, {+ ]' g, C1 [3 A9 ~纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
, p0 l" j( C  x5 X, X% v. H; _" Tmargin-top = 纵坐标百分比%
, ?9 E2 L' `' ]" I; b4 H. D8 A------------- ...
# G; J: A9 w+ z* U3 Y

  {3 Z  q- P0 l. p) T9 e7 k6 n2 ^3200x5000$ O+ S% D7 q( T+ n
y=2500
" W" I; E! a& {/ ^! z7 h! O/ Tmargin-top=2500/3200*100=78.12%
- |5 z( ^' K# l2 E- A
; m% U: Q# V& z  s4 i) T+ F不知道如何理解这78.12%?
! N4 U5 j& v2 h. W
$ {! ^, I6 X3 F( O& w0 t
# n" T. a- v: h4 @( k5 wmargin-left的算法?% l/ M) B; {6 K: m) o- g; O& b) g

9 B1 A7 s0 I( k8 O/ y3 J9 i
/ Q! ^8 J( G& _2 I( r

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
  V' Q. H+ `! S. m* O比如两栏的词典:
& J1 T' s6 q6 u1)输入分栏的三条竖线位置,估计只有个别页面需要调整8 R+ `/ A( Q* z4 {  `: `; L7 ^8 u
2)只需手工画出词与词之间的分割横线。
! \6 u9 S8 q8 V, R再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形3 \/ H3 T6 [* f6 S
3)每章划分词条完毕,一次性切割图形
: W: N- u1 }& R$ Z5 s) t* r/ V3 @

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑
2 X9 p0 `" E/ o6 Y0 x# L
vbnet 发表于 2016-5-21 23:02
* N- e/ N( G) }>固定框无法向图片下方移动。

, r+ |9 Q4 x% z. E( y7 R
2 `5 A& s) F" j8 C  m固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。+ H3 R( i& e2 A. R. k3 ]

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:050 h1 P6 ^5 }) w& Z! z, ~" |, x, c6 R
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

& d6 J' O0 S8 d' R! M改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
: [! p* M" j6 F8 \/ W$ d& O5 @# R5 q% f/ d/ _( V1 h3 ^7 ?1 j
>固定框功能
  F/ u1 {, Q1 B6 p2 ]4 b; D" x9 Y) i
修正卷轴下拉后,不能往下拖动的情况; z. @' w9 J9 |, V/ r4 I
% l" C$ k6 g+ z3 D" B& f0 ]

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
! [1 Y& [$ z# j3 M/ M+ o. e5 J
chigre3 发表于 2016-5-21 07:29
/ a( t8 |1 a% b6 _. Ovbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。
. |6 F/ z$ J1 W  w7 C! M6 s* V

, u: d' y$ y. _* X$ R这样方式如何
" [( |* m3 D7 L4 v/ P- ~3 I9 r# N1 ]; X# f2 q' R
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方! E+ h. ^3 c& H3 @" r7 X. G

! U* d* E9 U; d5 H4 D" ^3 r点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮  h! o0 q- C9 s: f7 ~' H
往后只点图片
7 K; b0 A2 c6 @. f7 x" ]" @% _/ @2 {" a; u4 q3 w( J/ \' I- T

( A2 u- `" x& t; H还是加入公式算出%?" U/ X7 I" A! ]: _7 j1 g: \

6 g8 m/ _3 V- X. u
) I7 f  X2 q- j9 V8 @9 c  @& ~: ?
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?
8 g& p9 K& u- S& E9 m- ]3 M3 `/ q/ ]- K" |! k
$ C3 Q7 Y* j: Q: ^5 v

# \# L! x) U" U9 T* b& w如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41
# ~* B, e3 @8 V# L2016022更新
6 U  I) M- S) d! q0 z8 B5 A$ c: ]% s* z4 V
>固定框功能

6 ^" L, ~1 [- q" C3 f完全正常了,效率好高,大赞赞赞赞!!!) H3 d3 c2 N) M% \6 {8 i& @; |
期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
# I" e% d6 `: U# x* i! J这样方式如何  y  p( o9 h  n. w% S  N
0 x, l; V5 I: x* r
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

- j+ o- K. \- g3 v整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
5 a$ z0 {/ a# {0 n! Z完全正常了,效率好高,大赞赞赞赞!!!
1 C9 @1 B% }9 m4 n! P0 [期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...
6 P* p% z/ k8 r, h7 r
想法
' B( v: D! I) Ca,b,c,d指向同一张图4 ?; a- M8 J( V5 g
a词存图,设a为跳转目标,b,c,d指向a
. a9 O& Q  W8 ~; Y------产生对照表---------------
1 }3 i& l+ W! @0 n- C! kb#a
% S, \, b! u# u4 z6 sc#a* W6 J& e3 ^8 _) T6 h
d#a. M* b% R. E% `1 u, j, ~' |
--------------------------------------------------------
) u3 U" m+ R/ i4 X/ ^5 h寻找:2 p8 p: |9 T, w' L* j& R, }6 O
(^.*)#(.*$)
4 F0 x) }: y4 W0 a# Y取代为:
* }" ]; B$ w5 r6 [\1\r\n@@@LINK=\2\r\n</>
- L5 V( w# C! c5 r8 I; j-------------------------------
4 v! D5 i/ E! q6 I. |b2 {, n! {0 w* G5 n
@@@LINK=a0 F; B* Y9 V. L, Q
</>
0 J; V( j8 N- O4 b4 A" q; yc
; H5 ]0 I; j0 N- C0 R5 ?' z$ T* d, K& {@@@LINK=a
: M) i- w5 t4 o" p# x+ c  w</>" A: j& O% `# L& ~
d) t" w: K5 l1 Q4 q3 F7 H
@@@LINK=a
3 c! X+ M- M% w2 V9 A" B$ f</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:526 Q  K& g' ^- ~  l+ h2 }
这样方式如何/ F& g7 P' N# c$ P: x, i& O
# m. F& D+ p8 |, j+ z. M5 m+ K
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
4 i0 U  Y  G: I. a" M+ \- E
这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52. J$ n, e3 w5 \! z0 e
这样方式如何5 J& V& J* c8 v1 q' K

3 D/ x" n* u1 U% m8 V0 J0 t9 E开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

6 H- k" \! z8 P0 A! D; n7 {5 V! A默认的情况下就是你说的这样。
+ Z; H8 I' v" V之前的测试文件还在吧?; d: [! ?2 z# `* H( R0 O
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
' n# q5 z- S$ F* I0 d+ U单击这儿的数字,会自动跳到垂直 位置
5 J# b3 Y4 e9 `& g单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
, p1 X* H9 c, j/ B这样方式如何: B0 x" D# h4 @; d$ {

7 @0 x- d$ G8 r$ ]. |开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
  D1 A: h) {1 l* A# A
最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31
6 S4 @  _3 [: s, g- e这个可以测试吗?

5 a; _% f% \0 S1 `, _) _用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
0 m& U" R+ |$ B9 y最初加载的words列表如果也有极少的缺词可以手工加入吗?
% i; w/ I# r8 Q( W3 E
要等更新
  r- D3 Z. \9 I+ ]用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11/ Q0 y' G/ N& t% Q  `3 A
用法如上所述

3 c" G# M+ [4 l$ ]0 c  E万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58
& c  a- j; h# l0 k7 s0 o默认的情况下就是你说的这样。. T- P, _3 p& ~4 H
之前的测试文件还在吧?
( y0 G; t. }$ W输入YHCD_001,你会看到完整的该页词头索引,按 ...
8 E$ R- n4 C  h( R6 Q0 e
等你实际做几页,看看效果如何8 e* }0 P0 H7 ]+ O& W& Y+ |( z
' K, {9 m) A! ]$ Y

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
  e' Y6 N7 L3 E6 e2 K4 Q2 \用法如上所述
: h) K: s$ d  L; h# Y
打开的图片文件名是否可以写入?
; h* v* b) N) H这样方便后期编辑。
& g0 N7 V8 K- Y0 N% s7 B: v----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
' L, y; p) h( ~+ H. p, I想法
+ Y" J' B# L3 j* |- U. s" O6 la,b,c,d指向同一张图" Y6 z0 H+ N4 j- z. h  Z
a词存图,设a为跳转目标,b,c,d指向a

$ H! Q( u1 k' b4 j2 i: S3 _想法好!集成到程序自动完成就超级棒了。
- v& Z6 f' l6 n: D6 ~' U, Y/ F- @不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。
' Q" I) ?: s# r7 y% w0 Z

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-6-7 03:02 , Processed in 0.069497 second(s), 6 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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