Skip to content

Commit 2639a30

Browse files
authored
Merge pull request #290 from AEtheve/master
Ability to drag an image from the desktop for input
2 parents 57059ce + cfa68c9 commit 2639a30

File tree

4 files changed

+38
-10
lines changed

4 files changed

+38
-10
lines changed

electron_app/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

electron_app/src/components/Img2Img.vue

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
<img class="gal_img" style="width: 90%;" src="https://colormadehappy.com/wp-content/uploads/2022/02/How-to-draw-a-cute-dog-6.jpg"/>
88
-->
99

10-
<div v-if="inp_img" class="image_area" :class="{ crosshair_cur : is_inpaint }" style="height: calc(100% - 200px); border-radius: 16px; padding:5px;">
10+
<div v-if="inp_img" @drop.prevent="onDragFile" @dragover.prevent class="image_area" :class="{ crosshair_cur : is_inpaint }" style="height: calc(100% - 200px); border-radius: 16px; padding:5px;">
1111
<ImageCanvas ref="inp_img_canvas" :is_inpaint="is_inpaint" :image_source="inp_img" :is_disabled="!stable_diffusion.is_input_avail" canvas_id="img2imgcan" canvas_d_id="img2imgcand" ></ImageCanvas>
1212
</div>
13-
<div v-else @click="open_input_image" class="image_area" :class="{ pointer_cursor : is_sd_active }" style="height: calc(100% - 200px); border-radius: 16px; padding:5px;">
14-
<center>
13+
<div v-else @drop.prevent="onDragFile" @dragover.prevent @click="open_input_image" class="image_area" :class="{ pointer_cursor : is_sd_active }" style="height: calc(100% - 200px); border-radius: 16px; padding:5px;">
14+
<center>
1515
<p style="margin-top: calc( 50vh - 180px); opacity: 70%;" >Click to add input image</p>
1616
</center>
1717
</div>
@@ -40,7 +40,7 @@
4040

4141
<div v-if="stable_diffusion.is_input_avail" class="content_toolbox" style="margin-top:10px; margin-bottom:-10px;">
4242
<div class="l_button button_medium button_colored" style="float:right ; " @click="generate_img2img" >Generate</div>
43-
<SDOptionsDropdown :options_model_values="this_object" :elements_hidden="['img_h' , 'img_w' , 'batch_size']"> </SDOptionsDropdown>
43+
<SDOptionsDropdown :options_model_values="this_object" :elements_hidden="['img_h' , 'img_w' ]"> </SDOptionsDropdown>
4444
</div>
4545
<div v-else-if="stable_diffusion.generated_by=='img2img'" class="content_toolbox" style="margin-top:10px; margin-bottom:-10px;">
4646
<div v-if="is_stopping" class="l_button button_medium button_colored" style="float:right" @click="stop_generation">Stopping ...</div>
@@ -240,8 +240,18 @@ export default {
240240
if(img_path && img_path != 'NULL'){
241241
this.inp_img = img_path;
242242
this.is_inpaint = false;
243-
}
244-
243+
}
244+
},
245+
onDragFile(e){
246+
if( !this.stable_diffusion.is_input_avail)
247+
return;
248+
if(!e.dataTransfer.files[0].type.startsWith('image/'))
249+
return;
250+
let img_path = e.dataTransfer.files[0].path;
251+
if(img_path && img_path != 'NULL'){
252+
this.inp_img = img_path;
253+
this.is_inpaint = false;
254+
}
245255
},
246256
247257
stop_generation(){

electron_app/src/components/Inpainting.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
</div>
2121

22-
<div class="inapint_container" >
22+
<div class="inapint_container" @drop.prevent="onDragFile" @dragover.prevent>
2323
<ImageCanvas style="cursor: crosshair;" v-if="inp_img" ref="inp_img_canvas" :is_inpaint="true" :image_source="inp_img" :is_disabled="!stable_diffusion.is_input_avail" id="inpaint" canvas_id="inpaintcan" canvas_d_id="inpaintcand" :stroke_size_no="stroke_size_no" ></ImageCanvas>
2424
<div v-else @click="open_input_image" style=" " :class="{ pointer_cursor : is_sd_active }" >
2525
<center>
@@ -193,6 +193,15 @@ export default {
193193
}
194194
},
195195
196+
onDragFile(e) {
197+
if (!this.stable_diffusion.is_input_avail)
198+
return;
199+
if (!e.dataTransfer.files[0].type.startsWith('image/'))
200+
return;
201+
let img_path = e.dataTransfer.files[0].path;
202+
this.set_inp_image(img_path)
203+
},
204+
196205
do_undo(){
197206
let a = this.undo_history.pop()
198207
if(a){

electron_app/src/components/Outpainting.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
</div>
1212

13-
<div id="outpainting_container" style=" ">
13+
<div id="outpainting_container" @drop.prevent="onDragFile" @dragover.prevent style=" ">
1414
</div>
1515
<textarea
1616
v-model="prompt"
@@ -408,6 +408,15 @@ export default {
408408
409409
},
410410
411+
onDragFile(e) {
412+
if (!this.stable_diffusion.is_input_avail)
413+
return;
414+
if (!e.dataTransfer.files[0].type.startsWith('image/'))
415+
return;
416+
let img_path = e.dataTransfer.files[0].path;
417+
this.add_img_to_stage(img_path, true)
418+
},
419+
411420
412421
413422
// get_mask_of_box(){

0 commit comments

Comments
 (0)