掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新
2 U: J0 W$ T4 J0 S5 |. v9 ~
( d0 C+ P$ A5 S! V* H( \  ]>套索功能
4 i1 `; N3 K6 ]/ y
2 ]/ l& N+ u: [' N5 w修正在词条的下方有很大的空白
0 ?" K9 V- {6 Q6 I+ d4 F/ i" ], k0 P+ {! N! }+ m9 S2 _
线条再细些

该用户从未签到

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

该用户从未签到

发表于 2016-5-22 00:52:34 | 显示全部楼层

8 c' {! n7 Y4 c$ \) m, e: h2 n' p
# W1 F# m" p$ }0 T2 ?) X  v解压ZIP:
6 P" m, A$ a: T! s9 }7 _' N; }0 i* o) a9 `
TEST.html 可以用浏览器查看一下效果
# l3 c3 e3 z( W5 D6 qTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!
4 V  O# o# u: @* G7 g4 P不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
7 [- B* @7 u9 R3 {) P单纯给出坐标
5 @/ t/ u8 e( `, X比如
( w" G8 f& w) n& _  Foffering#20,400
* L0 b1 Y/ S) k! f
我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )! E8 f2 N! ]% ~
margin-top = 纵坐标百分比%0 k6 b$ f9 O, i$ Y" F# ]8 G
------------------------
5 P  o1 b$ H" _8 j# p% q6 x6 X注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python* M! S# g5 p  m! N+ j2 \
  2. # -*- coding: utf-8 -*-
    6 v1 O- \' {" X
  3. from Tkinter import *; V0 V, H+ s- i/ C0 @4 W" k
  4. from tkFileDialog import askopenfilename; O$ T  j" g0 Z+ J& t* x3 j" u! B; t
  5. from PIL import Image, ImageTk
    . k" E9 T. T% s; n

  6. & s3 z7 Z* W  C4 H2 X7 V' O
  7. if __name__ == "__main__":. n; o! w& w3 F1 S
  8.     root = Tk()! p* i' B, p* s; m, p% p
  9.     #setting up a tkinter canvas with scrollbars( _5 i+ Z9 o3 y# Y; E
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
    - l- C2 {: l/ q0 {+ x- C
  11.     frame.grid_rowconfigure(0, weight=1)3 w9 }' S3 g/ T  ]5 w$ ^
  12.     frame.grid_columnconfigure(0, weight=1)
    / q+ q  g7 v* L1 P- y
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)7 w  ]% T2 O2 q
  14.     xscroll.grid(row=1, column=0, sticky=E+W)
    . m! j% K* q+ t) W
  15.     yscroll = Scrollbar(frame)- f, N; |6 t* _
  16.     yscroll.grid(row=0, column=1, sticky=N+S)
    ! {! ~7 o' j* _. j8 h1 N
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)8 _0 K% i1 d* `, d" r  n4 _% m
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    . U8 b4 a$ Q  L
  19.     xscroll.config(command=canvas.xview)+ z' o# j3 S- ^( Z, l+ j
  20.     yscroll.config(command=canvas.yview)
    % S" @5 |: c/ f& ^2 P! p5 Q( n
  21.     frame.pack(fill=BOTH,expand=1)- G5 K! w  \# x( B: D: `+ a' R

  22. ) G. N! n. y* l1 \% E
  23.     #adding the image
    5 @8 _3 y  U) a2 P; M! I
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')# w# X$ @% Z9 A! s" I; s# O0 t
  25.     img = ImageTk.PhotoImage(Image.open(File))
    - f+ d/ f' L# n$ r- k+ \6 j" \
  26.     canvas.create_image(0,0,image=img,anchor="nw")1 }- K  W6 U5 z5 N& S, ^5 I
  27.     canvas.config(scrollregion=canvas.bbox(ALL))' `2 }; U5 z4 R  d* F, M

  28. 9 x( F8 U6 E# Q  J" U9 c
  29.     #function to be called when mouse is clicked
    9 x* V5 h1 U( R9 N  j/ C& ?) S
  30.     def printcoords(event):  E- g* @' B, R6 i: ~7 \
  31.         #outputting x and y coords to console" l2 v& F. F$ k7 H, E/ w, X, |7 [
  32.         canvas = event.widget
    ' `" W6 ~) h: t# ~2 W
  33.         x = canvas.canvasx(event.x)  G3 r$ X# B6 @# l' }9 T
  34.         y = canvas.canvasy(event.y)! h% W6 y0 K7 e, q+ z; v
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")& U1 A3 ^% d7 ]- n; Z# q. |+ e2 T
  36.         print x,y2 d! z% h* R# E( }+ i  g. l* B2 z
  37.         f = open('_coords.txt','a')) r& P8 K$ C6 j" h' F
  38.         f.write('X: %s\tY: %s\n' % (x,y))* ]# {) J6 i9 `" \5 B
  39.         f.close()
    7 Z3 e$ w5 E# k$ f' h5 H3 U

  40. # K; y$ a/ v2 ]) y7 B; O& b
  41.     #mouseclick event! N* z3 X4 e( n
  42.     canvas.bind("<Button 1>",printcoords)
    $ Z8 T" b: p+ B9 @
  43.     root.mainloop(), U6 p0 F' l2 P  i. x, T9 d1 Z; }
复制代码
6 p8 l- B+ v0 C1 b/ M0 h

3 A: h4 w) g8 r$ C: }/ {" u来源处:
2 c% I4 D) ?) f8 ehttp://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52' P0 ~; c% U8 v- F$ ~
解压ZIP:
' n1 y9 \7 i8 ^: Z+ c. d1 l
- E% J+ C! w. k# |- d" c: iTEST.html 可以用浏览器查看一下效果
% h7 A4 Q+ c3 |0 K
基本了解
, O4 P0 t4 h+ pcss position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
6 [, m$ f6 r1 t6 I
chigre3 发表于 2016-5-22 00:58% B& w( L; b" V8 y, f
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )
# ^( h; y. f% |* I) j, O$ K* Imargin-top = 纵坐标百分比%
& ]: P4 `3 H& R; @$ R------------- ...

- W! S. `0 d$ G% E  }' ~# u! W' s) p: M! g: `; h' j3 G
3200x5000
# ]8 ]" m, B3 M+ w( P4 dy=2500' T* ~7 I: H. E6 N, O# u2 F) z; J5 w# A
margin-top=2500/3200*100=78.12%" \5 X; P! E. p
- ^) |" Z1 M: ]  I* U8 z2 a0 m9 B0 ]
不知道如何理解这78.12%?
) C6 z! l" B1 B  B$ w% T- `: g! A8 i" r! Z
: [! ^$ I5 \, _5 b1 X+ v* r! p# W
margin-left的算法?
! h7 [$ J5 t! Z( U& N) L7 K/ r& E
( |) {6 {9 n- h9 D: r, Q& Z
* |5 L- c" o! c9 e& H- [; S

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确) J& T. F5 W: m9 @+ n+ e
比如两栏的词典:
) C+ N( p! c2 S) B- b0 _1)输入分栏的三条竖线位置,估计只有个别页面需要调整1 [* }2 Y! s& \6 I" X
2)只需手工画出词与词之间的分割横线。
; x8 @7 d5 H  O: s' g7 _2 g再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形; L6 n4 L2 S/ _+ m- N  c
3)每章划分词条完毕,一次性切割图形
0 Y& X8 E7 r' A6 D

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑
6 k0 p  z2 D- B/ O& f" ]' r9 d
vbnet 发表于 2016-5-21 23:02
% H; `0 I% ^5 e8 i>固定框无法向图片下方移动。
# I1 I8 B. Q$ j

( e9 z& q2 }$ Z8 v! f固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。7 P# J& Z! R) G) P

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
% P4 u5 s1 \* U6 D固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...

1 K# m6 T0 m2 a  c. @改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新! V% R" u5 R- p* n4 `$ d; U! x
" {2 k  N0 T$ X1 h' r0 d9 y
>固定框功能
0 G2 {/ U* [' c1 a7 l5 \* l* |
: o7 O& B. F: q- q; C- I) l修正卷轴下拉后,不能往下拖动的情况
) M, w; Y' c+ P. G0 e' h$ M" g2 O4 q4 [4 f7 U) L( s% L

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
0 r+ ~+ A* g( }' Y5 b# x
chigre3 发表于 2016-5-21 07:296 x: q% }1 H* p# H( |8 ]2 b
vbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。
2 P+ a: Q* C6 S9 Q1 _! I

% ?* Q. k* F) b这样方式如何( g' I9 s9 r$ S% B: J, T" \2 {
+ q/ D" C: }6 M0 Y
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方* P3 ^4 V. K4 p% z5 g& K& A
  \( o5 O4 j& {2 w4 C% Z2 `
点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮
/ a. T' z; \8 _! |# v1 t往后只点图片7 P" h( K- t; k/ ^% p
, x8 ~& Y2 [; ?0 A* o. V

8 X! U7 d1 C, X% e7 ~0 e$ c5 |! V6 r还是加入公式算出%?
' l+ L4 p% I! @6 J% ~* @  F! N7 E4 O/ n! ?, `

& k) J, v& Z4 P- k0 r: Q4 W% f0 e3 m. Z$ `9 c
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?
$ ~- t; q) k; I( q* @& p( N4 h* v- g5 I- g- {; q- d7 j; r* j

9 c$ M$ ^+ Y  n6 s2 h9 u$ V' \
" Z0 C9 i( r! [如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41
% a; Z$ S7 J, f! ^5 ]2016022更新
% \9 i3 [- n7 a% f0 Y' a0 w
$ _8 h' E, i2 K* {7 G1 _>固定框功能
5 f, U, @( [* F/ {7 Z
完全正常了,效率好高,大赞赞赞赞!!!
3 ]( a3 D- J! J9 X8 C6 d" h3 I, k3 C期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
! O( D% N- _3 x, c  L( P" L  R  \3 o5 L这样方式如何
! n$ t$ b. O8 l9 v' V
% A+ t) ~% {# a1 C# K. r开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
! C6 K1 m7 s# z8 A( v8 }
整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
0 Y1 \; t5 e" g完全正常了,效率好高,大赞赞赞赞!!!
6 a. @* O8 ^) K! ^& K* |- N期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...

- [0 o% M  k; }1 Q& Q- t想法* N6 c4 v* `9 N
a,b,c,d指向同一张图
: s  e: T5 n3 q8 K: N! T' za词存图,设a为跳转目标,b,c,d指向a% b" h( l9 ?# w. f6 p( k+ B
------产生对照表---------------* m0 Y7 W9 ^  m5 F4 _" I7 n5 @+ A
b#a
' ~$ {5 T9 `# ^- E( qc#a" V. I4 H  @* U: l8 r+ x; U  A8 P- S
d#a
9 V' T5 _5 [8 L5 f4 P; a' Q--------------------------------------------------------: N$ K9 W1 H0 l% G& F* N* L7 [0 Q5 A
寻找:0 V5 S* O8 Y1 I7 W4 O4 Z
(^.*)#(.*$)7 b* P2 E3 j& o& d6 b1 M/ q3 N
取代为:3 K% R1 u4 R, G& W/ B, m# U
\1\r\n@@@LINK=\2\r\n</>" t) N  K0 ~( D4 Y2 F
-------------------------------0 D8 s+ y, `& D
b( V% e- A. R9 o  e, w2 b8 i
@@@LINK=a
7 a: [( ~7 z1 H& I0 G, t+ w</>
; A, h& W4 z) N* Q' }c
$ b" j" K; j- S7 U@@@LINK=a: I( X$ C) [( n( J3 |( m7 T
</>, ~7 N7 H9 u! V4 t' _
d, Z# n9 j; v6 Z' W0 m1 H
@@@LINK=a% ~- W7 i- z! d) Q! h9 Y$ \
</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:521 U- p  N" x4 M0 a3 D# c
这样方式如何
2 D8 {! F. |' q6 E0 V. b9 u# ~- t+ v! v/ q
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
- ~9 B5 g$ u6 @7 W9 T, ~
这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
3 f+ x/ c" P' E/ O这样方式如何& Q) p) \+ R. l- K5 N

& m  k8 Y! M( ^2 F开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

! t9 t( v* \  B默认的情况下就是你说的这样。
3 I: \- ^  E# _$ |9 g之前的测试文件还在吧?
- Y% E8 y, h3 t' v. @& Q" b& X输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
5 B) |8 t: z3 Q( s( w$ F) C单击这儿的数字,会自动跳到垂直 位置% ?( Y$ e4 A9 Q8 s  s7 v
单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
0 G$ X7 [% i/ \' W: y6 L' e' e这样方式如何
* C( p. G6 S- b# j- C  G
  s+ n, I7 M/ Y1 y开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

6 X: F# S9 L) R6 X4 l- }9 J% \最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31
" P9 H' d  P2 ]0 K* l! a这个可以测试吗?
0 m9 i! s( p+ O: R
用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00
' C% k  `5 @- q4 u# O" K( j最初加载的words列表如果也有极少的缺词可以手工加入吗?
" L3 S- C! U7 |5 Q
要等更新
; P8 p& j8 B6 h) _3 v8 {用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11: [9 a5 _, V( V& x
用法如上所述

0 Y$ @7 y7 x2 m( q5 Y# v4 W万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58" Q& ]9 w: j5 L/ b% F0 q' O6 z
默认的情况下就是你说的这样。1 K, x& ?( w8 `- x
之前的测试文件还在吧?
" _9 G( T: P: A4 F输入YHCD_001,你会看到完整的该页词头索引,按 ...

$ ?0 a: a, T  V& ?等你实际做几页,看看效果如何
/ b1 L# A' `4 C5 x. p# c8 B" F$ u4 I+ S( o& G' w" _" \5 \5 _7 V

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
. M+ h. R+ s" L( y0 s( E0 u用法如上所述

/ _1 o8 k3 s, s3 U; r打开的图片文件名是否可以写入?
1 p7 x4 O' B( D4 K  g! I这样方便后期编辑。
# p1 d0 Z/ r! O, e- G----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27
2 n, Y0 E8 W) S: {( V. v% l想法7 r  W8 E( Z8 v/ G9 y) T0 m
a,b,c,d指向同一张图& }7 x0 v* v. D; a4 D2 U5 j7 a
a词存图,设a为跳转目标,b,c,d指向a
" m* Z2 j: `4 `. u' q6 S: g
想法好!集成到程序自动完成就超级棒了。3 B9 U7 Z* Q* t/ C
不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。
( [$ z- k! ?" c

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-7-4 13:44 , Processed in 0.022816 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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