掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

楼主: vbnet

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

  [复制链接]

该用户从未签到

 楼主| 发表于 2016-5-21 23:38:39 | 显示全部楼层
2016021_3更新
1 B4 X, m8 R+ W0 W7 ^: ?" O2 e9 H9 G& p4 o; K
>套索功能
" `+ L" V, k, X; c1 Z. U; }) b% {: T& N9 p# ?
修正在词条的下方有很大的空白
8 \- S8 `# q' `
9 f0 d6 h+ B# g7 g+ R* v线条再细些

该用户从未签到

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

该用户从未签到

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

. j4 y( `' P" r$ }
) |6 F; ~8 b" ^- i: O  v解压ZIP:
! ?2 M" `( j! r1 ]* _' m* t6 [. }6 ~- z8 C
TEST.html 可以用浏览器查看一下效果
" V: J% f- Y( a9 z- a% E$ o5 HTEST.MDX 只能用 GoldenDict 查看不完全效果,即“红色标识”的显隐性不成功,有谁懂点JS的帮忙给出个主意!( N% V7 s/ T' t. C, P6 r/ B
不然图片下方的词条,因为版面高度关系会因为没有“标识提示”而变得难找了!!!

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 00:53:49 | 显示全部楼层
vbnet 发表于 2016-5-21 11:39
, S9 G  z4 n# P: [1 `, W单纯给出坐标
5 ^5 j1 N$ Y; E( S& V比如
- I7 i% Y  A; h5 yoffering#20,400

( Y3 m$ q4 i  g7 Z2 @0 H8 s  l% r我回复啦,是个测试文件,需要用GoldenDict加载MDX,HTML浏览器里倒是可以显隐“红色位置标识”

该用户从未签到

发表于 2016-5-22 00:58:34 | 显示全部楼层
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )  K9 Z2 U( C# y6 t* B/ G6 K8 F4 Y
margin-top = 纵坐标百分比%$ X" ?7 P) t) Z8 Y5 D  A7 c
------------------------/ d6 b  S; s: Y' N0 A9 k# Z
注意,不是除以图片高度,是除以图片宽度!!!!

该用户从未签到

发表于 2016-5-22 01:24:02 | 显示全部楼层
  1. #!/usr/bin/env python8 a5 d2 X2 N0 C) z
  2. # -*- coding: utf-8 -*-! U( n! M3 \) R
  3. from Tkinter import *
    / `" s' v+ E$ J: l" W4 J
  4. from tkFileDialog import askopenfilename2 m, D- M  z& |
  5. from PIL import Image, ImageTk
      Y; j1 R: W( t! g2 {4 {
  6. . U8 E+ [. \( T% c, J
  7. if __name__ == "__main__":
    & I+ x, U5 L. B4 U3 Q
  8.     root = Tk()
    - W7 g8 ]) X9 X. f( s* E, W& }
  9.     #setting up a tkinter canvas with scrollbars, }7 w7 i0 j+ ]% o# e+ e0 l
  10.     frame = Frame(root, bd=2, relief=SUNKEN)
    ! c( |+ U1 R7 ^; c
  11.     frame.grid_rowconfigure(0, weight=1): D0 m$ G. Z9 N
  12.     frame.grid_columnconfigure(0, weight=1)
    , h; R( Q2 n# t  |; Z
  13.     xscroll = Scrollbar(frame, orient=HORIZONTAL)! g* ]- F6 e& h; `$ u8 t
  14.     xscroll.grid(row=1, column=0, sticky=E+W)7 q! B6 u/ f5 J# |: m( R& A1 Y
  15.     yscroll = Scrollbar(frame); V7 R( \1 o" q) G( k: o" A
  16.     yscroll.grid(row=0, column=1, sticky=N+S)2 r7 h% S" C7 `" |8 t  M# S: j
  17.     canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
    5 y& r! ]! o& L% k1 t+ \" C
  18.     canvas.grid(row=0, column=0, sticky=N+S+E+W)
    9 O1 S+ s% b$ D% f# t% d
  19.     xscroll.config(command=canvas.xview)
    0 W, |4 T( ~& R* c* I
  20.     yscroll.config(command=canvas.yview)
    ) ~! {& L: ?: F% h8 O+ \) Q& `
  21.     frame.pack(fill=BOTH,expand=1)
    4 j  b% w. f, O* a8 S/ c7 @# o; c
  22. ; Q4 [' P1 _- R. S
  23.     #adding the image
    2 L: T& X$ f8 Z  ?# ?( ^& {* T
  24.     File = askopenfilename(parent=root, initialdir="C:/Users/dell/Desktop/意汉词典/_ok",title='Choose an image.')
    % w" m! f" ~. o! W' r
  25.     img = ImageTk.PhotoImage(Image.open(File))1 I1 \0 T% t  C) y
  26.     canvas.create_image(0,0,image=img,anchor="nw")5 e" W! \: ^/ E# g9 C
  27.     canvas.config(scrollregion=canvas.bbox(ALL))
    2 S1 s6 L* ^  G7 ~- m' v9 d) p# E; c
  28. 9 [% A2 ^/ b/ @" N. w
  29.     #function to be called when mouse is clicked
    9 q4 ]7 J. k8 d* j/ {0 p5 u7 q7 U2 r
  30.     def printcoords(event):
    : V& F/ E  t$ {0 j! R) _  S
  31.         #outputting x and y coords to console
    8 d* f: Z4 j% d  p) Q
  32.         canvas = event.widget
    9 f$ j. B+ c% J
  33.         x = canvas.canvasx(event.x)) j) ]  F( h3 w& T4 t' S# h5 y
  34.         y = canvas.canvasy(event.y)
    ; [) I/ q; S* c2 O
  35.         oval = canvas.create_oval(x-8, y-8, x+8, y+8, fill="red")2 a# m1 b/ J, O- b. u% U; E9 ]5 l( V
  36.         print x,y* V- Y& _$ B. S/ c; C" J) L! S
  37.         f = open('_coords.txt','a')) P" q/ m& H* T3 x# s  G5 D: l$ l
  38.         f.write('X: %s\tY: %s\n' % (x,y))7 X, B. T3 P, X- h( K
  39.         f.close(); r! E8 T1 P5 p- F  N; m! z9 d( W# R
  40. 8 v. \# E7 E6 Z. s6 A8 Y. q+ I
  41.     #mouseclick event# ]6 `% [: P: X* T& D
  42.     canvas.bind("<Button 1>",printcoords)
    # A# J3 d- y, J) Q* Z  ~4 D" J
  43.     root.mainloop()
      T, g+ y% b9 N' \
复制代码

6 e/ s, W# o  \' {1 @2 T+ q+ H
' H/ F8 Y( Y: V: O来源处:9 V: w) b5 Q; S: a% U  W& o* P( B
http://stackoverflow.com/questio ... ck-coordinate-on-it

该用户从未签到

 楼主| 发表于 2016-5-22 08:09:10 | 显示全部楼层
chigre3 发表于 2016-5-22 00:52
7 T" k( }7 m+ _解压ZIP:
  [4 s: F, K7 w8 G4 Y( p) s; O' M* F* c
TEST.html 可以用浏览器查看一下效果
+ h) C& K; P/ U0 a6 }
基本了解
+ V/ C6 V  n7 R$ p: u- g( e9 \css position margin-top

该用户从未签到

 楼主| 发表于 2016-5-22 08:18:45 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 08:51 编辑
+ `; {) s. }$ S5 C; i1 |
chigre3 发表于 2016-5-22 00:58( H# ?' ~) n& j9 \6 T
纵坐标百分比 = 取两位小数 ( 词条纵坐标 / 图片宽度 * 100 )6 i! b2 c. |+ V( S0 Y
margin-top = 纵坐标百分比%5 i5 b7 h- z" _" \( {
------------- ...

6 Y* Z' i" \8 v+ X. m' O$ ?6 x9 i
$ E5 \& r0 _. _3 Q( ~6 Y3200x5000
: H, K" p& k) d6 t& f  W; fy=2500& S% E) L2 a3 R; e
margin-top=2500/3200*100=78.12%
+ y+ d! T) N7 j, ~' _' b
. a( f& w4 M8 Q0 M4 u; j- N+ Y. v不知道如何理解这78.12%?3 q4 x( e& e* i6 c0 y

. }8 O5 l% Q3 y) _/ x! S
" w% a# K5 ]$ nmargin-left的算法?
, ?* J$ L6 l9 h+ v* u8 a7 I3 x3 B& O' z5 T9 C$ h* q) m
8 G( ^3 c3 E0 R( H! |* j/ O7 m: l

该用户从未签到

发表于 2016-5-22 09:28:09 | 显示全部楼层
词典有固定的两栏或三栏,一般扫描的版本定位足够准确9 \% P# t# Y% r, c; T
比如两栏的词典:
& }2 K2 c. V* [$ y5 }4 X8 Q1)输入分栏的三条竖线位置,估计只有个别页面需要调整/ n3 {* y' S& ^+ U* ]% f# q0 V
2)只需手工画出词与词之间的分割横线。
( U0 l3 m: s( H7 e# g% {再自动化一点, 只需鼠标在每两个词之间点击一下,自动画横线,与固定的分栏竖线构成矩形
: h/ t! [0 e1 ~1 |2 k# I; V3)每章划分词条完毕,一次性切割图形8 l& f* u: @+ G  ^6 B4 r

该用户从未签到

发表于 2016-5-22 10:05:55 | 显示全部楼层
本帖最后由 fedor 于 2016-5-25 13:00 编辑 3 [5 P( x& C! S* }# ]
vbnet 发表于 2016-5-21 23:02
3 t. O' J# \1 h* I/ I/ `; L>固定框无法向图片下方移动。

: P4 ~3 \8 G# T
$ }7 L8 F# A8 f8 x6 S固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页面需要按右侧的滚动条向下滚动,滚动后显示出的这部分页面,固定框是移动不过来的。
; H' K% J2 j! i3 e

该用户从未签到

 楼主| 发表于 2016-5-22 13:19:46 | 显示全部楼层
fedor 发表于 2016-5-22 10:05
8 Z. t. N( _* a固定框无法移动的情况是:打开的图片上下高度较长时,也就是当前电脑屏幕不是显示整个页面时,看下面的页 ...
, X' p9 [1 Z: N2 F
改好了,等更新

该用户从未签到

 楼主| 发表于 2016-5-22 13:41:32 | 显示全部楼层
2016022更新
* e. B) S3 e# T. _- |" ]
6 U  }8 \6 J$ N2 j7 T>固定框功能: J0 i: r; A' M3 F

# Z( z' A3 p* E% \6 x修正卷轴下拉后,不能往下拖动的情况
9 M; ?$ L4 P) h; g9 v% Q8 @# W+ c$ C8 R+ `: p- e

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-22 14:52:39 | 显示全部楼层
本帖最后由 vbnet 于 2016-5-22 17:28 编辑
: J. c! V' l& p# D
chigre3 发表于 2016-5-21 07:29
4 ]3 y1 k' L5 f8 r9 hvbnet, 我偷个懒,就只要词条所在的XY坐标,这样查询单词,点击一下,自动滚动到所在的垂直位置。

( C9 o2 S0 W* g, [8 t# g! J. N
7 I/ w, c  e/ p  |. f/ ]  q这样方式如何
( v( x2 b8 K  t# ]% t$ ?& h7 C; R! w3 j9 q5 [
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)-->写入词头列表(高亮)的右方7 g9 O0 z- @. O8 B% ~2 L  i

5 S+ B: m  L* J0 a点缩图中该词头的位置(x,y)--->左方词头自动往下一格高亮: a' {% D! q0 _! r/ @% @9 q
往后只点图片
9 ~% Q4 S2 |" t+ W+ }2 @) W
# `3 j& ?/ [# O/ {( M6 @. X: c( U; A& R+ b3 Z2 X2 |& ^, C
还是加入公式算出%?
& \- {  D9 q, @7 k& D( M/ N5 N$ R5 j* k6 t: f, Q: y  e5 {6 E, R

' U2 Q0 q' Z9 @1 z, H2 ~* T( f, V5 O3 E9 ~
如果我只单纯想查词时,图片中(x,y)直接拉到(0,0)显示,css,html的写法?# {9 I8 H6 \* Y& _
  Q: T/ W" D# Z# [; F: x
; L: W% a- a2 \0 A/ i* a1 g

: w; |1 E: p" C; S% a如附件

本帖子中包含更多资源

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

x

该用户从未签到

发表于 2016-5-22 19:38:27 | 显示全部楼层
vbnet 发表于 2016-5-22 13:41% c1 P- `* K9 s) J  N$ f
2016022更新
  R6 F2 d5 ~% Y( D; U8 _. {7 |9 ^3 T# i) e, Q" a
>固定框功能
7 a' g* H  Y0 Z4 e. c
完全正常了,效率好高,大赞赞赞赞!!!
* L# k4 j4 ?  M期待下一个功能能够开发出来,也就是同时选定多个词条,定位一个截图。

该用户从未签到

发表于 2016-5-23 02:42:55 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52; }7 o+ ]+ D5 }" d# u0 P
这样方式如何) L3 I( ?" N+ R3 e" [# l
: G! R5 q' H7 g: r6 {! q) M
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
2 R+ z2 [* M3 s6 r8 e- @
整页面的词条,点击序号跳到当前页所在垂直位置,点击单词链接该单词,方便查询其他词库

该用户从未签到

 楼主| 发表于 2016-5-23 15:27:36 | 显示全部楼层
fedor 发表于 2016-5-22 19:38
+ F2 O6 k- }' [' g' ^/ d完全正常了,效率好高,大赞赞赞赞!!!
' e/ ^) P1 W) l* H# r% P& T2 W期待下一个功能能够开发出来,也就是同时选定多个词条,定位一 ...
% l: W4 o. l' u; C
想法& d& F" @% W! U1 w& ?' }
a,b,c,d指向同一张图
  H/ n2 K& }8 B. @( h& g' @0 {a词存图,设a为跳转目标,b,c,d指向a; T+ o( W, L- u5 @4 |
------产生对照表---------------! Z3 j2 r! T2 g' m+ Q
b#a
% n9 G6 m4 y. H3 i! v- `& Jc#a# ]  c# Z2 O2 Z( s$ O/ q2 @/ A
d#a2 E/ V' T2 u7 F5 Y$ t
--------------------------------------------------------
/ t& f( B6 c, `: ^# `0 U寻找:2 J$ H, j) w6 @' ^
(^.*)#(.*$)+ V8 [9 I) k& Y6 f9 b- ~6 y
取代为:; z+ o$ C" d+ n& \7 R
\1\r\n@@@LINK=\2\r\n</>. a  r7 b/ y1 m/ V' y) c
-------------------------------3 U3 u! f, [: i6 D  R
b
* u3 Q8 h3 _  N7 ~, g# w. ]& b@@@LINK=a
7 |% T# F/ C" j) i& Q</>
' b4 j$ Z. Z1 m: Oc& Q$ M+ K+ R: F$ d" ?* X
@@@LINK=a  w) j# G3 Y5 ^. z4 Z
</>
* R+ g0 J3 |4 B4 ^" Od! T# W2 ?0 k3 n3 W4 H, o# A% |
@@@LINK=a
! @. L0 f9 M8 M1 r1 h</>

该用户从未签到

发表于 2016-5-23 18:31:48 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52+ f- P+ E. H: h! S, x8 {
这样方式如何+ D# B7 V% U7 ]2 L1 s3 \* z5 c7 W, e
& f7 c; {3 U; S( f6 Q- j
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

. Z2 k% s! m: f/ l7 C; k- J这个可以测试吗?

该用户从未签到

发表于 2016-5-23 18:58:33 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52
* U8 Q( }: a) [! U. j这样方式如何; u; X# p  C5 j/ L, F! V0 N. D8 W" M

$ ]# {9 a: c' y1 f) G) W$ X: P开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...
! ?" S: N5 t/ @: E
默认的情况下就是你说的这样。+ e, G; d2 P" d8 E/ g
之前的测试文件还在吧?, K$ Y6 P6 @' M6 c' H0 `0 c
输入YHCD_001,你会看到完整的该页词头索引,按照左右两列区分开的。
8 e5 q: E# N1 i1 J, P单击这儿的数字,会自动跳到垂直 位置* S) l; `$ I+ F9 z" g9 W1 v2 u' |
单击这儿的单词,查询该单词

该用户从未签到

发表于 2016-5-23 19:00:25 | 显示全部楼层
vbnet 发表于 2016-5-22 14:52  `: x5 g: n0 ^. W" C6 N
这样方式如何, N/ z9 o# _. P4 T
# e" |% T8 x/ \# U' c( ?
开始点左方词头----->点缩图中该词头的位置(x,y)--->取得原图中该词头的位置(x,y)--> ...

6 g; t) f/ L! r7 z最初加载的words列表如果也有极少的缺词可以手工加入吗?

该用户从未签到

 楼主| 发表于 2016-5-23 19:11:41 | 显示全部楼层
chigre3 发表于 2016-5-23 18:31( Z# ^2 q  P1 t8 q6 M3 I+ i* I
这个可以测试吗?

* b$ ?3 W2 B9 ^- p3 v& D7 z用法如上所述

本帖子中包含更多资源

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

x

该用户从未签到

 楼主| 发表于 2016-5-23 19:14:34 | 显示全部楼层
chigre3 发表于 2016-5-23 19:00% y% }; m$ k6 A3 }
最初加载的words列表如果也有极少的缺词可以手工加入吗?

7 g# i4 X" A3 c% u* v要等更新
/ k* d% g' C9 \; U用插入的方式

该用户从未签到

发表于 2016-5-23 19:16:54 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11* a& Z: Z8 J6 H1 Y* C7 v( `
用法如上所述
( w/ H, G; Z4 |* n* Z* w
万分感谢!这样超好用!

该用户从未签到

 楼主| 发表于 2016-5-23 19:19:11 | 显示全部楼层
chigre3 发表于 2016-5-23 18:58; Z* F  o" e) \* \7 c- i
默认的情况下就是你说的这样。
2 l" d1 l6 W8 o' I$ G8 h9 w8 F之前的测试文件还在吧?
5 z. S/ B5 t3 y4 A' e$ p% [输入YHCD_001,你会看到完整的该页词头索引,按 ...
' |2 q! y3 q0 {% e( N, }' T% J6 i
等你实际做几页,看看效果如何. o( n- {0 Z" R/ Z$ e9 `: D" f
: Q; J" j3 Q6 d) B+ V- d, H

该用户从未签到

发表于 2016-5-23 19:23:09 | 显示全部楼层
vbnet 发表于 2016-5-23 19:11
8 w* L# U: n! |用法如上所述
' U5 s' N5 a" z: Z* t
打开的图片文件名是否可以写入?
+ @7 Y$ v0 x% z' Z( ^这样方便后期编辑。
/ C; `) G2 K! f+ R% Y! g----------

该用户从未签到

发表于 2016-5-23 19:27:44 | 显示全部楼层
vbnet 发表于 2016-5-23 15:27+ U/ }: l* \0 m; e( N% }
想法
9 V! g, X* c3 v0 B; P( l1 `a,b,c,d指向同一张图
4 j# \" T2 Q- ^* y7 q0 @a词存图,设a为跳转目标,b,c,d指向a

5 [2 h$ c$ M* |& n. U想法好!集成到程序自动完成就超级棒了。
0 h$ A7 K7 K+ m0 j; v3 j8 |不过自己手工试做了一个图片,三个词条的,但是第二个和第三个词条不显示图片啊,不知问题在哪里。图片和txt文本见附件。9 _2 L4 P$ B) K# D2 G) W2 g

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2026-11-3 04:03 , Processed in 0.019716 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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