掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新3 [/ |- u6 a# U  N/ d# f% V
1 \0 o$ C+ B; f4 B/ L
>套索功能
! ]: h  G( p0 }0 `+ r. b+ M! c1 e& H. d6 n
修正在词条的下方有很大的空白8 B, D1 w4 I& o2 |1 B  Y" w* M: o

7 a( [( ~9 w, i0 U) B7 z线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层
3 A+ M& e6 L6 f# m( y7 I0 u" ^( K

' B6 y( Z) v+ u+ {解压ZIP:. C8 c, k# e( \- }

5 _# ]& }  B# I2 _3 y9 T5 p3 `TEST.html 可以用浏览器查看一下效果! G+ c3 G. A7 T
TEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!
, |9 K/ m" s% S: E* E- F不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39. b, b, v) i6 g4 E+ F9 f/ Q0 \
单纯给出坐标
6 |; M+ _8 c- j3 L+ `9 N比如
. I$ ?! Y4 H5 K5 }offering#20,400

5 M1 k- W: s' ?我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )! L' M$ P( W$ b/ K! G0 H' e: d5 u
margin-top = 纵坐标百分比%
' ^# S% z  D* O8 f, E------------------------
! n& M, q& X% M* t& C注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python
      g8 c+ c- [; F; P% q* `
  2. # -*- coding: utf-8 -*-9 j! P8 U9 c5 f- C, M4 R$ ^8 _$ M
  3. from Tkinter import *
    9 L5 Q0 i4 `3 j' \
  4. from tkFileDialog import askopenfilename: L& ]9 }5 E* S
  5. from PIL import Image, ImageTk- e$ B' }2 \* E7 f3 f8 A
  6. 3 [$ S& `- W$ p* N
  7. if __name__ == "__main__":
    8 B( i; ~. Z, H3 X
  8.     root = Tk()) g8 P( b5 r/ H) k; R  p
  9.     #setting up a tkinter canvas with scrollbars+ R3 o+ a4 y  H, w6 s1 q: i
  10.     frame = Frame(root, bd=2, relief=SUNKEN)5 ]# v5 N) |; s" D
  11.     frame.grid_rowconfigure(0, weight=1)
    4 D0 S' P5 A; B" T1 z" a
  12.     frame.grid_columnconfigure(0, weight=1). p  k' U, l( j' X$ x( [* i3 ?
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)
    5 U' K/ l9 j+ L" u
  14.     xscroll.grid(row=1, column=0, sticky=E+W): K8 @- O; u4 i$ k; G
  15.     yscroll = Scrollbar(frame)
    % V6 W% U, `2 {/ i
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    & t. r  D3 U! R& p/ N
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    4 @, p3 f0 B% D$ B3 D( x$ |
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    1 C$ k/ G7 ?( I3 u  U8 V* G/ n
  19.     xscroll.config(command=canvas.xview)
    ( w" {; `7 {9 `
  20.     yscroll.config(command=canvas.yview)
    2 h. y1 [9 _* [; A: W8 U: w% I
  21.     frame.pack(fill=BOTH,expand=1)
    & T6 W, i' Z3 h0 s
  22. ( {" h2 u0 `' `! _) o
  23.     #adding the image
    8 P' k$ D1 Z: p3 ]* ]- c
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')" F; ~; E+ A9 l* l2 y: O# ?
  25.     img = ImageTk.PhotoImage(Image.open(File))
      v! U4 y) W) R& C  j( \4 T2 B( ]
  26.     canvas.create_image(0,0,image=img,anchor="nw")4 d( S: S! |; c$ P! u* P! R
  27.     canvas.config(scrollregion=canvas.bbox(ALL))) k$ T! t7 v0 E! ]

  28. 5 P2 \. k# [! R8 t$ e  O% z: B
  29.     #function to be called when mouse is clicked
    0 }& L, E! F4 ~- ^, N/ L
  30.     def printcoords(event):
    & K. f/ O& Q$ Z/ K! t! i2 n
  31.         #outputting x and y coords to console
    9 w* F( n. f: `; k& K- U6 P5 o9 U4 @; B
  32.         canvas = event.widget
    3 U2 x9 d$ G1 \5 z  ]
  33.         x = canvas.canvasx(event.x)
    " T: j  h! U- d2 G! w
  34.         y = canvas.canvasy(event.y)2 z" H8 O# R. d- j+ K
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")) J& _% ?8 p, K& p7 p: C& j
  36.         print x,y4 C; O( k; j$ ?$ \) H
  37.         f = open('_coords.txt','a')% \( D  a: Q2 J0 x9 C& j
  38.         f.write('X: %s\tY: %s\n' % (x,y))
    , t7 U, q1 M3 B. z) `% |, `& |1 _
  39.         f.close()- D' c7 [+ g2 B! g1 X, N  b
  40. - X; b  x0 M# w- y3 o
  41.     #mouseclick event
    ) f0 j7 ^0 t/ U' b/ q; x4 M+ O
  42.     canvas.bind("<Button 1>",printcoords)* T- x: u$ d- v. Y8 @
  43.     root.mainloop()
    , o; q- m) H4 ?- t! M: Y/ Y
复制代码
( N) t6 W9 @  A! \: P9 X

) H6 [% z# C, }2 Z+ I6 P% {* Q来源处:
) C3 U5 z( ?; m- {http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52
, W& ~6 T; r; d( w% ?解压ZIP:
$ [" h# i1 F9 a1 n1 D9 O% \4 O
, a. y$ M: Z, xTEST.html 可以用浏览器查看一下效果

* E. Y" J& K' `基本了解
+ B" O- i8 P- e$ s! S' Pcss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑 0 ^+ T( ^1 e) x/ O+ a6 k; s
chigre3 发表于 2016-5-22 00:58& p  c( z+ p" L" m& S- p! y
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
  P, @5 G# {& ~, A. I7 l5 R' J8 i6 omargin-top = 纵坐标百分比%
6 k) f  H) {" a+ I7 |9 Q------------- ...
- w: b& x' z$ o- j: D: n/ v# [
9 p! U$ D: o- o. O
3200x5000
- }& w, x  D& |9 Z* Ky=2500
5 x. P! z! `# k( m) |4 Smargin-top=2500/3200*100=78.12%, b% _* V# o+ O7 U2 k

: S( t8 h; |5 s8 c. ]不知道如何理解这78.12%?3 F# P5 U& N0 j! c8 C3 u0 l
0 F$ w3 S. @9 b4 J' C! D  G% ]

: d4 f6 d6 I, C7 b- u: `' ?9 |margin-left的算法?' w6 Z0 V! g1 o! i8 S
: Z+ h- e1 R9 k

3 o( n  Z2 g8 F7 y- Q

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确
. B0 A& W- {" l比如两栏的词典:; G' k1 J! F3 @2 I0 D  D9 D4 y
1)输入分栏的三条竖线位置,估计只有个别页面需要调整7 a8 g; g7 H: D
2)只需手工画出词与词之间的分割横线。- Y7 j) @+ _6 n0 L
再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形  n# v! n1 d8 q
3)每章划分词条完毕,一次性切割图形4 |4 t. a# @8 ]5 e4 }5 [9 q

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 $ w+ l% K0 Q1 J. _: D' I5 V+ l
vbnet 发表于 2016-5-21 23:02
1 b3 c0 O5 v# I/ |  C$ @3 b>固定框无法向图片下方移动。
9 t( I9 ]' |, f! O" c3 |8 Q0 {

& z5 m# x8 i- b% _& Q' O固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
. M/ {. {- Z2 M; \' l* R

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05) \4 |" u! T( m3 r! t
固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...
5 ?& N2 J7 N* ]$ V+ H" n, Y
改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
1 h4 w. E1 j4 m3 ^3 a- e0 S4 ^* N+ U/ ^% K# \5 \7 V6 f
>固定框功能, {$ [% n' T% d' V3 }3 A6 T

9 W* z  s% N$ D8 F9 y/ m修正卷轴下拉后,不能往下拖动的情况( l4 P% h$ U7 n. X3 C& w7 c; w. O
; B) c# H# S2 e- w/ d

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
) @& }7 B! D6 `, f. y
chigre3 发表于 2016-5-21 07:29
) D1 j2 y  T& w, S4 N) Hvbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

7 `% F4 o6 ^* z1 e, a8 q4 Y. i9 l! J- q
这样方式如何
8 M3 E- s  |! E- b$ K- @8 O1 N1 o( V* f4 @1 T# \
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方3 t+ {9 ^8 r$ C/ k6 Y& T
& a" M- V; d4 z3 X
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
8 h, ~* j- _# r' [2 V往后只点图片
" h3 P  b. v9 R& W$ U9 D
8 }- `7 H+ g; L0 b0 ^1 n
; F3 e0 _# V; j# E* e. |还是加入公式算出%?
, R& K$ g9 J9 \! I- |' q4 h
: H8 f; h4 Q) U
9 b* d- f: g; s6 W* l! a! s" e! g8 P: H0 W0 d( c: g# C
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?3 y  |$ [. Z* W1 Q3 ~2 B) [
, o4 P1 [: _: B

$ G; L( H( U/ _+ k$ t  J; R$ w
" B% @, v2 |. }5 f# B如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41
! s  L0 g) H% ^2016022更新
& p* ]$ V( h  M! S( J# K, Z1 N
( Z& U9 c2 t# D% ~, S>固定框功能

  y7 _4 Q4 V; l' R完全正常了,效率好高,大赞赞赞赞!!!
% c! e5 @) x: H* a/ T, F4 |期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52) q1 L1 U9 W: Y, B5 K+ E
这样方式如何1 G5 R/ W1 C, Z6 O

5 M2 }6 N, H9 Z, P) U7 h/ L9 u开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
+ O8 l5 b% v  o; }$ b" W
整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
5 J: i9 b4 {% N) s完全正常了,效率好高,大赞赞赞赞!!!
* M9 q5 R4 }" W  ^/ Y0 p期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

! ]6 g) q/ L; t$ H9 [1 u5 N* \, S想法5 p9 x- [5 `" g" C
a,b,c,d指向同一张图: v# i9 D+ x& B0 G
a词存图,设a为跳转目标,b,c,d指向a( K. [7 G9 T7 }! T2 g* Z$ r; s
------产生对照表---------------/ q% U! h: s' ^. T( V
b#a
* ]% F$ }( H: u( Lc#a1 h  Y7 `3 E( h8 C: l! E7 `
d#a
% [# \: X# p( `( G) N) a--------------------------------------------------------2 m8 x0 e. c* |( ^# }  M; U
寻找:+ B0 b: ?6 w& _/ o9 E
(^.*)#(.*$)
4 O: m' B9 ]6 T: u* A取代为:
! n0 G- A2 l1 |- b: @# o\1\r\n@@@LINK=\2\r\n</>
0 z3 M0 r7 ~  x3 [  m-------------------------------
, F6 {3 Q' [& @4 f; s. K" [4 mb
- n7 E# V# X. ?8 X. r1 U@@@LINK=a
4 G1 A3 B. @( N# u% `0 n</>' |* U0 g7 G  T
c, L4 H/ _5 O; ~  L* X. F
@@@LINK=a& C. v5 ~+ B% T: Q( o' c4 f8 L
</>
# N1 z# [9 v( w7 v5 V5 Z8 fd
7 p) K- \) U9 }* B( V, u+ [$ r+ R, b* N@@@LINK=a
0 Q  M2 A$ A* x6 t</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:527 ~# y5 Y! I! J8 b8 ?0 Y
这样方式如何
/ v0 r7 y( y& w% x# O8 e% b. ?2 E  e" A, R3 m; ~# a9 i
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

% U. O0 A9 l4 Y* n& M! {这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
3 v8 b; ~( b9 D5 M0 j这样方式如何2 o- u4 ~. i9 b# u
" Y" U- v. M( F! u: `
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
) D; z5 J2 R  c7 l% G
默认的情况下就是你说的这样。+ |1 g' _, y7 p- c
之前的测试文件还在吧?
3 C7 u+ {5 v9 K4 b! e7 ?输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
6 p- p) S" d' k2 \6 d% w* J单击这儿的数字,会自动跳到垂直 位置
. b4 t* p9 n6 X8 q8 k单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
5 }3 S+ t+ m5 ]& g这样方式如何
- D# {- q7 o9 z0 S+ i' v
6 o& |! t0 e, j* M开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

, B1 r& w" X$ n最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31
/ _7 J8 q# o! a+ d: h这个可以测试吗?

1 f" j- t/ C# @. y- V: D; G用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00$ P7 e' \: m5 e: i1 L: }5 |
最初加载的words列表如果也有极少的缺词可以手工加入吗?
6 o: U) q! X+ h4 S# J& H
要等更新) b4 P- R' y+ E+ C# i" j
用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:111 M8 j9 a# W6 ?+ n+ S
用法如上所述

! E: k1 G0 h0 G! Z/ W- \万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58
. p3 Y& e- }- L: a1 k* l默认的情况下就是你说的这样。) `0 \! T/ F$ I$ u" }, G
之前的测试文件还在吧?, K9 l6 x9 Q# L1 P. \
输入YHCD_001,你会看到完整的该页词头索引,按 ...
5 J" a1 x* E  ?% e1 y$ K9 S
等你实际做几页,看看效果如何
6 I# `% b% e% B
' O: J1 V4 u, c; }5 @$ o6 _! P

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11" C$ ^7 h* Y4 r- X6 E8 E
用法如上所述

8 E, h# p0 [- D打开的图片文件名是否可以写入?% z6 w& v5 i" F3 k
这样方便后期编辑。
8 w& N  P$ F% x! c1 w" c" Q1 f----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
+ G3 a1 n5 \; I- L想法2 k" q) T7 _2 W, I
a,b,c,d指向同一张图, L; w4 Q) o* n
a词存图,设a为跳转目标,b,c,d指向a

8 O( w2 e3 S% N5 A' n/ Q/ j. J想法好!集成到程序自动完成就超级棒了。" x+ ?% I( F/ _2 T" N
不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。! Y# E. S( `2 z: l7 t

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-9-18 20:07 , Processed in 0.018930 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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