Na veel zoeken op internet heb ik nog geen goede oplossing gevonden voor mijn probleem.
Ik ben bezig met het schrijven van een java applet die een plaatje laadt van de server.
Vervolgens kan de gebruiker een deel van het plaatje selecteren en dit deel croppen.
Vervolgens wordt het nieuwe plaatje weergegeven in de applet.
Wat er nu nog moet gebeuren is dat het plaatje uit de applet als een .jpg bestand op de server komt te staan. Hoe doe ik dat?
van wat ik via google etc heb gevonden begrijp ik dat het misschien middels een http POST actie kan. Maar hoe precies heb ik nog niet (werkend) gevonden...
Kan iemand mij hiermee helpen?
Graag letterlijke code als dat lukt...
Een voorbeeld van de applet zoals ik die nu heb is hier te vinden: http://217.19.24.59:60/applet/applet.htm
Je moet in het grijze gebied klikken. Er verschijnt dan een plaatje van een wijnfles. (dit is ook nog een bug; de wijnfles moet meteen zichtbaar zijn...). Nu kun je een gebied selecteren van het plaatje. Klik vervolgens op de "crop"-knop en rechts van het originele plaatje verschijnt het gecropte plaatje.
Er moet nu dus nog een knop "verzend" bij die het gecropte plaatje als .jpg-bestand op de server kan opslaan. (ik vermoed met een .php bestand)
Hieronder de code van de java applet zoals ik die nu heb (er staat nog wel wat "junkcode" in, maar ik ben nog in de developing fase...):
Ik ben bezig met het schrijven van een java applet die een plaatje laadt van de server.
Vervolgens kan de gebruiker een deel van het plaatje selecteren en dit deel croppen.
Vervolgens wordt het nieuwe plaatje weergegeven in de applet.
Wat er nu nog moet gebeuren is dat het plaatje uit de applet als een .jpg bestand op de server komt te staan. Hoe doe ik dat?
van wat ik via google etc heb gevonden begrijp ik dat het misschien middels een http POST actie kan. Maar hoe precies heb ik nog niet (werkend) gevonden...
Kan iemand mij hiermee helpen?
Graag letterlijke code als dat lukt...
Een voorbeeld van de applet zoals ik die nu heb is hier te vinden: http://217.19.24.59:60/applet/applet.htm
Je moet in het grijze gebied klikken. Er verschijnt dan een plaatje van een wijnfles. (dit is ook nog een bug; de wijnfles moet meteen zichtbaar zijn...). Nu kun je een gebied selecteren van het plaatje. Klik vervolgens op de "crop"-knop en rechts van het originele plaatje verschijnt het gecropte plaatje.
Er moet nu dus nog een knop "verzend" bij die het gecropte plaatje als .jpg-bestand op de server kan opslaan. (ik vermoed met een .php bestand)
Hieronder de code van de java applet zoals ik die nu heb (er staat nog wel wat "junkcode" in, maar ik ben nog in de developing fase...):
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
| import java.awt.*; import java.awt.image.*; import java.applet.*; import java.awt.event.*; import java.net.*; import java.net.URL; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.image.CropImageFilter; import java.awt.image.AreaAveragingScaleFilter; import java.awt.image.FilteredImageSource; import java.awt.MediaTracker; import java.awt.Toolkit; import java.lang.InterruptedException; import java.lang.String; import java.net.*; import java.io.*; public class Applet4 extends Applet implements MouseListener, MouseMotionListener, ActionListener { int currentX, currentY, startX, startY,wplaatje,hplaatje; int beginX, beginY, width, height; int muisX, muisY,px,py; int wp, hp; int rectleft, recttop, nwidth, nheight; boolean dragMode = false; boolean rectclicked = false; boolean dragrect = false; Canvas canvas; URL base; Button crop; Image origImage; Image cropImage; MediaTracker tracker; public void init() { tracker = new MediaTracker(this); try { base = getDocumentBase(); } catch (Exception e) {} this.origImage = getImage(base,"IMG_002.JPG"); tracker.addImage(origImage,1); try { tracker.waitForAll(); } catch (InterruptedException e) {} wplaatje = origImage.getWidth(this); hplaatje = origImage.getHeight(this); wp = wplaatje; hp = hplaatje; canvas = new Canvas(); this.setLayout(null); canvas.setBounds(30,30,wp+75,hp); this.add(canvas); canvas.addMouseListener(this); canvas.addMouseMotionListener(this); crop = new Button("crop"); crop.setBounds(0,0,100,25); this.add(crop); crop.addActionListener(this); } public void paintcanvas() { Graphics g = canvas.getGraphics(); g.drawImage(this.origImage,0,0,wp,hp,this); String w = "" + wplaatje; g.drawString(w, 10, 10); // set coordinaten // beginX = Math.min(startX, currentX); beginY = Math.min(startY, currentY); width = currentX - startX; height = currentY - startY; // einde coordinaten // if (dragrect == false) { // beperkingen voor rectangle // if (width < 0) { width = 0 - width; if (beginX < 0) { width += beginX; beginX = 0; } } // beperk beginX if (height < 0) { height = 0 - height; if (beginY < 0) { height += beginY; beginY = 0; } } // beperk beginY if ((beginX + width) > wp) { width = wp - beginX-1; } // beperk width if ((beginY + height) > hp) { height = hp - beginY-1; } // beperk height // einde beperkingen // } if (dragrect == true) { // beperkingen voor rectangle // int varX = muisX-rectleft; int varY = muisY-recttop; if (varX < 0) { muisX = rectleft; } // beperk beginX if (varY < 0) { muisY = recttop; } // beperk beginY // einde beperkingen // } // teken rectangle // if (width > 0 && height > 0 && dragrect == false) { g.drawRect(beginX, beginY, width, height); // selectievak g.drawRect(beginX, beginY, 4, 4); // blokje linksboven g.drawRect(beginX+(width/2)-2, beginY, 4, 4); // blokje middenboven g.drawRect(beginX+width-4, beginY, 4, 4); // blokje rechtsboven g.drawRect(beginX, beginY+(height/2)-2, 4, 4); // blokje linksmidden g.drawRect(beginX+width-4, beginY+(height/2)-2, 4, 4); // blokje rechtsmidden g.drawRect(beginX, beginY+height-4, 4, 4); // blokje linksonder g.drawRect(beginX+(width/2)-2, beginY+height-4, 4, 4); // blokje middenonder g.drawRect(beginX+width-4, beginY+height-4, 4, 4); // blokje linksonder } // einde teken rectangle // // teken dragrectangle // if (dragrect == true) { px = (muisX-rectleft); py = (muisY-recttop); g.drawRect(px, py, width, height); // selectievak g.drawRect(px, py, 4, 4); // blokje linksboven g.drawRect(px+(width/2)-2, py, 4, 4); // blokje middenboven g.drawRect(px+width-4, py, 4, 4); // blokje rechtsboven g.drawRect(px, py+(height/2)-2, 4, 4); // blokje linksmidden g.drawRect(px+width-4, py+(height/2)-2, 4, 4); // blokje rechtsmidden g.drawRect(px, py+height-4, 4, 4); // blokje linksonder g.drawRect(px+(width/2)-2, py+height-4, 4, 4); // blokje middenonder g.drawRect(px+width-4, py+height-4, 4, 4); // blokje linksonder } // einde dragrectangle // ///////// Weergave coordinaten /////////////// g.drawString("beginX: "+beginX, 225, 20); // X g.drawString("beginY: "+beginY, 225, 32); // Y g.drawString("breedte: "+width, 225, 44); // breedte g.drawString("lengte: "+height, 225, 56); // lengte g.drawString("currentX: "+currentX, 225, 68); g.drawString("currentY: "+currentY, 225, 80); g.drawString("startX: "+startX, 225, 92); g.drawString("startY: "+startY, 225, 104); ///////// Weergave coordinaten END /////////// // draw cropped image // if (this.cropImage != null) { g.drawImage(this.cropImage,300,0,this); } // einde cropped image // } public void paint(Graphics g) { paintcanvas(); } public void mousePressed(MouseEvent e) { muisX = e.getX(); muisY = e.getY(); if (muisX > beginX && muisX < beginX+width && muisY > beginY && muisY < beginY+height) { System.out.println("geklikt in rectangle"); rectclicked = true; rectleft = muisX-beginX; recttop = muisY-beginY; } else { System.out.println("geklikt buiten rectangle"); startX = e.getX(); startY = e.getY(); currentX = e.getX(); currentY = e.getY(); rectclicked = false; paintcanvas(); } } public void mouseReleased(MouseEvent e) { if (dragrect == true) { startX = muisX-rectleft; startY = muisY-recttop; currentX = width+startX; currentY = height+startY; dragrect = false; } dragMode = false; paintcanvas(); } public void mouseDragged(MouseEvent e) { if (rectclicked == true) { dragrect = true; muisX = e.getX(); muisY = e.getY(); paintcanvas(); } else if (rectclicked == false) { dragMode = true; currentX = e.getX(); currentY = e.getY(); paintcanvas(); } } public void mouseMoved(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseClicked(MouseEvent e){} public void actionPerformed(ActionEvent e) { if (width != 0 && height != 0) { this.cropImage=this.createImage(new FilteredImageSource(this.origImage.getSource(),new CropImageFilter(beginX,beginY,width,height))); System.out.println("breedte2:"+width); System.out.println("lengte2:"+height); double newheight = height*(75.0/width); int nh = (int)newheight; System.out.println("newheight:"+nh); this.cropImage=this.createImage(new FilteredImageSource(this.cropImage.getSource(),new AreaAveragingScaleFilter(75, nh))); tracker=new MediaTracker(this); tracker.addImage(this.cropImage,0); try { tracker.waitForID(0); } catch(InterruptedException ie) { ie.printStackTrace(); } } paintcanvas(); } } |