marsadh commited on
Commit
4e1e3d4
·
verified ·
1 Parent(s): a3361be

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +380 -638
index.html CHANGED
@@ -1,652 +1,394 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content=
6
- "width=device-width, initial-scale=1.0">
7
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
8
- <title>Qoc Ai Image Upscaler</title>
9
- <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
10
- <link rel="shortcut icon" href="/favicon.ico" type=
11
- "image/x-icon">
12
- <link rel="stylesheet" href=
13
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/css-new/image-upscaler.css">
14
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
15
- <meta name='robots' content=
16
- 'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'>
17
- <!-- This site is optimized with the Yoast SEO plugin v16.9 - https://yoast.com/wordpress/plugins/seo/ -->
18
- <meta name="description" content=
19
- "This page introduces the most powerful image editor. You can upscale images up to 8× without a watermark. Lossless enlarging features are also available.">
20
- <link rel="canonical" href=
21
- "https://www.free-videoconverter.net/free-image-upscaler/">
22
- <style id='classic-theme-styles-inline-css' type='text/css'>
23
- body {
24
- font-family: 'Poppins', sans-serif;
25
- }
26
-
27
- /* Example for applying to specific elements */
28
- h1, h2, h3, h4, h5, h6 {
29
- font-family: 'Poppins', sans-serif;
30
- font-weight: 600; /* Example weight */
31
- }
32
-
33
- p {
34
- font-family: 'Poppins', sans-serif;
35
- font-weight: 400; /* Regular weight */
36
- }
37
- /*! This file is auto-generated */.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
38
-
39
- .floating-button {
40
- position: fixed;
41
- bottom: 20px;
42
- left: 20px;
43
- background-color: #834aff;
44
- color: white;
45
- padding: 15px 25px;
46
- border: none;
47
- border-radius: 10px;
48
- font-size: 14px;
49
- font-weight: bold;
50
- cursor: pointer;
51
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
52
- transition: background-color 0.3s, box-shadow 0.3s;
53
- text-decoration: none;
54
- font-family: 'Poppins', sans-serif;
55
- display: flex;
56
- align-items: center;
57
- justify-content: center;
58
  }
59
- .floating-button:hover {
60
- background-color: darkviolet;
61
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.3);
 
 
 
62
  }
63
- .floating-button i {
64
- margin-right: 10px;
65
-
66
- </style>
67
- <link rel='stylesheet' id='trp-language-switcher-style-css' href=
68
- 'https://www.free-videoconverter.net/wp-content/plugins/translatepress-multilingual/assets/css/trp-language-switcher.css?ver=2.7.4'
69
- type='text/css' media='all'>
70
- <link rel='shortlink' href=
71
- 'https://www.free-videoconverter.net/?p=15131'>
72
- <style id="wplmi-inline-css" type="text/css">
73
- span.wplmi-user-avatar { width: 16px;display: inline-block !important;flex-shrink: 0; } img.wplmi-elementor-avatar { border-radius: 100%;margin-right: 3px; }
74
- </style>
75
- <link rel="alternate" hreflang="en-US" href=
76
- "https://www.free-videoconverter.net/free-image-upscaler/">
77
- <link rel="alternate" hreflang="zh-CN" href=
78
- "https://www.free-videoconverter.net/zh_cn/free-image-upscaler/">
79
- <link rel="alternate" hreflang="ar" href=
80
- "https://www.free-videoconverter.net/ar/free-image-upscaler/">
81
- <link rel="alternate" hreflang="ca" href=
82
- "https://www.free-videoconverter.net/ca/free-image-upscaler/">
83
- <link rel="alternate" hreflang="cs-CZ" href=
84
- "https://www.free-videoconverter.net/cs/free-image-upscaler/">
85
- <link rel="alternate" hreflang="da-DK" href=
86
- "https://www.free-videoconverter.net/da/free-image-upscaler/">
87
- <link rel="alternate" hreflang="de-DE" href=
88
- "https://www.free-videoconverter.net/de/free-image-upscaler/">
89
- <link rel="alternate" hreflang="el" href=
90
- "https://www.free-videoconverter.net/el/free-image-upscaler/">
91
- <link rel="alternate" hreflang="es-ES" href=
92
- "https://www.free-videoconverter.net/es/free-image-upscaler/">
93
- <link rel="alternate" hreflang="fa-IR" href=
94
- "https://www.free-videoconverter.net/fa/free-image-upscaler/">
95
- <link rel="alternate" hreflang="fi" href=
96
- "https://www.free-videoconverter.net/fi/free-image-upscaler/">
97
- <link rel="alternate" hreflang="fr-FR" href=
98
- "https://www.free-videoconverter.net/fr/free-image-upscaler/">
99
- <link rel="alternate" hreflang="he-IL" href=
100
- "https://www.free-videoconverter.net/he/free-image-upscaler/">
101
- <link rel="alternate" hreflang="hi-IN" href=
102
- "https://www.free-videoconverter.net/hi/free-image-upscaler/">
103
- <link rel="alternate" hreflang="hr" href=
104
- "https://www.free-videoconverter.net/hr/free-image-upscaler/">
105
- <link rel="alternate" hreflang="id-ID" href=
106
- "https://www.free-videoconverter.net/id/free-image-upscaler/">
107
- <link rel="alternate" hreflang="it-IT" href=
108
- "https://www.free-videoconverter.net/it/free-image-upscaler/">
109
- <link rel="alternate" hreflang="ja" href=
110
- "https://www.free-videoconverter.net/ja/free-image-upscaler/">
111
- <link rel="alternate" hreflang="ko-KR" href=
112
- "https://www.free-videoconverter.net/ko/free-image-upscaler/">
113
- <link rel="alternate" hreflang="ms-MY" href=
114
- "https://www.free-videoconverter.net/ms/free-image-upscaler/">
115
- <link rel="alternate" hreflang="nb-NO" href=
116
- "https://www.free-videoconverter.net/nb/free-image-upscaler/">
117
- <link rel="alternate" hreflang="nl-NL" href=
118
- "https://www.free-videoconverter.net/nl/free-image-upscaler/">
119
- <link rel="alternate" hreflang="hu-HU" href=
120
- "https://www.free-videoconverter.net/hu/free-image-upscaler/">
121
- <link rel="alternate" hreflang="pl-PL" href=
122
- "https://www.free-videoconverter.net/pl/free-image-upscaler/">
123
- <link rel="alternate" hreflang="pt-BR" href=
124
- "https://www.free-videoconverter.net/pt/free-image-upscaler/">
125
- <link rel="alternate" hreflang="ro-RO" href=
126
- "https://www.free-videoconverter.net/ro/free-image-upscaler/">
127
- <link rel="alternate" hreflang="ru-RU" href=
128
- "https://www.free-videoconverter.net/ru/free-image-upscaler/">
129
- <link rel="alternate" hreflang="sv-SE" href=
130
- "https://www.free-videoconverter.net/sv/free-image-upscaler/">
131
- <link rel="alternate" hreflang="th" href=
132
- "https://www.free-videoconverter.net/th/free-image-upscaler/">
133
- <link rel="alternate" hreflang="tr-TR" href=
134
- "https://www.free-videoconverter.net/tr/free-image-upscaler/">
135
- <link rel="alternate" hreflang="vi" href=
136
- "https://www.free-videoconverter.net/vi/free-image-upscaler/">
137
- <link rel="alternate" hreflang="zh-TW" href=
138
- "https://www.free-videoconverter.net/zh_tw/free-image-upscaler/">
139
- <link rel="alternate" hreflang="en" href=
140
- "https://www.free-videoconverter.net/free-image-upscaler/">
141
- <link rel="alternate" hreflang="zh" href=
142
- "https://www.free-videoconverter.net/zh_cn/free-image-upscaler/">
143
- <link rel="alternate" hreflang="cs" href=
144
- "https://www.free-videoconverter.net/cs/free-image-upscaler/">
145
- <link rel="alternate" hreflang="da" href=
146
- "https://www.free-videoconverter.net/da/free-image-upscaler/">
147
- <link rel="alternate" hreflang="de" href=
148
- "https://www.free-videoconverter.net/de/free-image-upscaler/">
149
- <link rel="alternate" hreflang="es" href=
150
- "https://www.free-videoconverter.net/es/free-image-upscaler/">
151
- <link rel="alternate" hreflang="fa" href=
152
- "https://www.free-videoconverter.net/fa/free-image-upscaler/">
153
- <link rel="alternate" hreflang="fr" href=
154
- "https://www.free-videoconverter.net/fr/free-image-upscaler/">
155
- <link rel="alternate" hreflang="he" href=
156
- "https://www.free-videoconverter.net/he/free-image-upscaler/">
157
- <link rel="alternate" hreflang="hi" href=
158
- "https://www.free-videoconverter.net/hi/free-image-upscaler/">
159
- <link rel="alternate" hreflang="id" href=
160
- "https://www.free-videoconverter.net/id/free-image-upscaler/">
161
- <link rel="alternate" hreflang="it" href=
162
- "https://www.free-videoconverter.net/it/free-image-upscaler/">
163
- <link rel="alternate" hreflang="ko" href=
164
- "https://www.free-videoconverter.net/ko/free-image-upscaler/">
165
- <link rel="alternate" hreflang="ms" href=
166
- "https://www.free-videoconverter.net/ms/free-image-upscaler/">
167
- <link rel="alternate" hreflang="nb" href=
168
- "https://www.free-videoconverter.net/nb/free-image-upscaler/">
169
- <link rel="alternate" hreflang="nl" href=
170
- "https://www.free-videoconverter.net/nl/free-image-upscaler/">
171
- <link rel="alternate" hreflang="hu" href=
172
- "https://www.free-videoconverter.net/hu/free-image-upscaler/">
173
- <link rel="alternate" hreflang="pl" href=
174
- "https://www.free-videoconverter.net/pl/free-image-upscaler/">
175
- <link rel="alternate" hreflang="pt" href=
176
- "https://www.free-videoconverter.net/pt/free-image-upscaler/">
177
- <link rel="alternate" hreflang="ro" href=
178
- "https://www.free-videoconverter.net/ro/free-image-upscaler/">
179
- <link rel="alternate" hreflang="ru" href=
180
- "https://www.free-videoconverter.net/ru/free-image-upscaler/">
181
- <link rel="alternate" hreflang="sv" href=
182
- "https://www.free-videoconverter.net/sv/free-image-upscaler/">
183
- <link rel="alternate" hreflang="tr" href=
184
- "https://www.free-videoconverter.net/tr/free-image-upscaler/">
185
- <link rel="alternate" hreflang="x-default" href=
186
- "https://www.free-videoconverter.net/free-image-upscaler/">
187
  </head>
188
- <body data-rsssl="1">
189
- <!-- Google Tag Manager (noscript) --><noscript><iframe src=
190
- "https://www.googletagmanager.com/ns.html?id=GTM-K898DJL" height=
191
- "0" width="0" style=
192
- "display:none;visibility:hidden"></iframe></noscript>
193
- <!-- End Google Tag Manager (noscript) -->
194
- <div class="image-loading-box noselect">
195
- <div class="icon-box">
196
- <img src=
197
- "https://i.postimg.cc/MKDYVXdL/20240610-082747.png"
198
- alt="Icon" height="05px" width="05px">
199
- <div class="icon-text">
200
- Qoc Upscaler
201
- </div>
202
- </div>
203
- <div class="loading-box show-message-box">
204
- <img src="https://iili.io/Jy7zUyF.gif" alt=
205
- "Wait" height= "60px" width="60px">
206
- <div class="loading-text">
207
- Loading..
208
- </div>
209
- <div class="button-group">
210
- <div class="cancel-upload">
211
- Cancel
212
- </div>
213
- </div>
214
- </div>
215
- <div class="load-error-box show-message-box">
216
- <img src="" alt=
217
- "Fail">
218
- <div class="error-text"></div>
219
- <div class="button-group">
220
- <div class="confirm">
221
- <label for="upload">New Image</label>
222
- </div>
223
- <div class="cancel">
224
- Cancel
225
- </div>
226
- </div>
227
- <div class="feed-back-box">
228
- <a href="javascript:void(0)" class="feed-back-link">Failure
229
- Feedback</a>
230
- </div>
231
- </div>
232
- <div class="load-warning-box show-message-box">
233
- <img src="https://i.postimg.cc/Ssp1S3ZF/6659895.png" alt=
234
- "Fail" height="20px" width="20px">
235
- <div class="warning-text"></div>
236
- <div class="button-group">
237
- <div class="confirm">
238
- Retry
239
- </div>
240
- <div class="cancel">
241
- Cancel
242
- </div>
243
- </div>
244
- <div class="feed-back-box">
245
- <a href="javascript:void(0)" class="feed-back-link">Failure
246
- Feedback</a>
247
- </div>
248
- </div>
249
- <div class="oversize-box show-message-box">
250
- <img src=https://i.postimg.cc/Ssp1S3ZF/6659895.png" alt=
251
- "Fail" height="20px" width="20px">
252
- <div class="warning-text"></div>
253
- <div class="button-group">
254
- <div class="confirm">
255
- Continue
256
- </div>
257
- <div class="cancel">
258
- Cancel
259
- </div>
260
- </div>
261
- <div class="feed-back-box">
262
- <a href="javascript:void(0)" class="feed-back-link">Failure
263
- Feedback</a>
264
- </div>
265
- </div>
266
- <div class="load-alert-box show-message-box">
267
- <img src="https://i.postimg.cc/Ssp1S3ZF/6659895.png" alt=
268
- "Fail" height="20px" width="20px">
269
- <div class="alert-text"></div>
270
- <div class="button-group">
271
- <div class="confirm">
272
- OK
273
- </div>
274
- </div>
275
- <div class="feed-back-box">
276
- <a href="javascript:void(0)" class="feed-back-link">Failure
277
- Feedback</a>
278
- </div>
279
- </div>
280
- </div>
281
- <div class="photo flex-box" id="bigPlantForm" onselectstart=
282
- "return false">
283
- <ul id="right-operate-box" style="position: relative;">
284
- <li class="refinement active">
285
- <div class="refinement_top">
286
- <div class="scale_zoon">
287
- Magnification: <span class=
288
- "scale_num">2x</span><span class="scale_num">4x</span>
289
- <span class="scale_num">6x</span> <span class=
290
- "scale_num">8x</span>
291
- </div>
292
- </div>
293
- </li>
294
- <div class="canvas">
295
- <div class="canvas_box flex-box">
296
- <div class="left flex-box active">
297
- <div class="old-box">
298
- <img src="" alt="" class="left_img_show">
299
- <div class="new-select-box"></div>
300
- <div class="privew-box old-preview"></div>
301
- <div class="event-box-left"></div>
302
  </div>
303
- </div>
304
- <div class="right flex-box active">
305
- <div class="img_compare">
306
- <img src="" alt="" class="right_img_show">
307
- <div class="new-select-box old-select-box"></div>
308
- <div class="privew-box new-preview"></div>
309
- <div class="event-box-right"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  </div>
311
- </div>
312
- </div>
313
- <div class="refinement_bottom flex-box">
314
- <div class="Original-continer">
315
- <span class="Original-box">Original: </span>
316
- </div>
317
- <div class="icon-container"></div>
318
- <div class="Output-continer">
319
- <span class="Output-box">Upscaled: </span>
320
- </div>
321
- </div>
322
- </div>
323
- <div class="btn switch-menu">
324
- <div class="flex-box active">
325
- <div>
326
- <label for="upload" style="display:none;"><span class=
327
- "click-upload">Upload</span></label>
328
- <label><span class="reloadImg hollowing">New
329
- Image</span></label>
330
- </div>
331
- <div>
332
- <span class="saveBtn">Download</span>
333
- <canvas id="exportImgBoard" style="display: none;">
334
- </canvas>
335
- <canvas id="temImgBoard" style="display: none;">
336
- </canvas>
337
- </div>
338
  </div>
339
- <div class="flex-box">
340
- <div>
341
- <label><span class="reloadImg hollowing">New
342
- Image</span></label> <span class=
343
- "hollowing back-remove">Back</span>
344
- </div>
345
- <div>
346
- <span class="crop-btn" style=
347
- "margin-top: 11px;">Save</span>
348
- </div>
349
- </div><a href="" download="" id="exportImg"></a>
350
- </div>
351
- <div class="icon">
352
- <img src=
353
- "https://i.postimg.cc/Ssp1S3ZF/6659895.png"
354
- alt="Icon">Qoc Upscaler
355
- </div>
356
- </ul>
357
- </div>
358
- <div class="mobile-save-image">
359
- <div class="image-show-box">
360
- <!-- <img src="" alt="edit-image" />Long press image to save -->
361
- <div class="show-long-press-save">
362
- <img src="" alt="edit-image"> <span>Please long press on
363
- the image to save it</span>
364
- </div>
365
- </div>
366
- <div style="width: 100%;height: 56px;"></div>
367
- <div class="back-edit">
368
- Back
369
- </div>
370
- </div>
371
- <div class="mask"></div>
372
- <div class="alert-mask"></div>
373
- <div class="feedback-mask"></div>
374
- <form action="javascript:;" class="feedback clearfloat" method=
375
- "post" id="feedback" onsubmit="return checkForm()" name=
376
- "feedback">
377
- <div class="feedback_container clearfloat">
378
- <p class="title">Thanks for your feedback. Please send us
379
- your problem or advice. We will reply you ASAP.</p>
380
- <p>Email:</p><input name="email" type="email" class=
381
- "form_email" id="mail" placeholder="Enter your email here!">
382
- <p>Content:</p>
383
- <textarea name="content" id="form_contents" cols="30" rows=
384
- "10" form="feedback" placeholder=
385
- "Please enter your problem or advice." required=
386
- ""></textarea> <input type="hidden" name="f_source" value=
387
- "3"> <input type="hidden" name="product_id" value="70004">
388
- <input type="submit" value="Submit" id="form_submit" name=
389
- "submit" onclick="send_submit()">
390
- </div>
391
- </form>
392
- <ul class="toggle_nav_box">
393
- <li class="products">
394
- <span>Online Tools</span>
395
- <div class="header_slider">
396
- <div class="slider_inner">
397
- <p class="header_title">Video</p>
398
- <ul class="clearfix active">
399
- <li>
400
- <a href="/free-online-video-converter/">Free
401
- Video Converter Online<img src=
402
- "/images/index/hot.png" loading="lazy" alt=
403
- "Hot"></a>
404
- </li>
405
- <li>
406
- <a href="/free-video-merger/">Free Video Merger
407
- Online</a>
408
- </li>
409
- <li>
410
- <a href="/free-screen-recorder/">Free Screen
411
- Recorder Online</a>
412
- </li>
413
- <li>
414
- <a href="/free-video-compressor/">Free Video
415
- Compressor Online</a>
416
- </li>
417
- <li>
418
- <a href="/free-video-player/">Free Video Player
419
- Online</a>
420
- </li>
421
- <li>
422
- <a href="/free-flv-to-mp4-converter/">Free FLV to
423
- MP4 Converter</a>
424
- </li>
425
- <li>
426
- <a href="/free-mp4-converter/">Free MP4 Converter
427
- Online</a>
428
- </li>
429
- <li>
430
- <a href="/free-mkv-converter/">Free MKV Converter
431
- Online</a>
432
- </li>
433
- <li>
434
- <a href="/free-mov-converter/">Free MOV Converter
435
- Online</a>
436
- </li>
437
- </ul>
438
- </div>
439
- <div class="slider_inner">
440
- <p class="header_title">Audio</p>
441
- <ul class="clearfix active">
442
- <li>
443
- <a href="/free-audio-converter/">Free Audio
444
- Converter Online</a>
445
- </li>
446
- <li>
447
- <a href="/free-audio-recorder/">Free Audio
448
- Recorder Online</a>
449
- </li>
450
- <li>
451
- <a href="/free-mp3-converter/">Free MP3 Converter
452
- Online</a>
453
- </li>
454
- </ul>
455
- <p class="header_title">Image</p>
456
- <ul class="clearfix active">
457
- <li>
458
- <a href="/free-background-remover/">Free
459
- Background Remover</a>
460
- </li>
461
- <li>
462
- <a href="/free-watermark-remover/">Free Watermark
463
- Remover<img src="/images/index/hot.png" loading=
464
- "lazy" alt="Hot"></a>
465
- </li>
466
- <li>
467
- <a href="/free-image-upscaler/">Free Image
468
- Upscaler<img src="/images/index/new.png" loading=
469
- "lazy" alt="New"></a>
470
- </li>
471
- <li>
472
- <a href="/free-image-converter/">Free Image
473
- Converter<img src="/images/index/new.png"
474
- loading="lazy" alt="New"></a>
475
- </li>
476
- <li>
477
- <a href="/free-image-compressor/">Free Image
478
- Compressor</a>
479
- </li>
480
- <li>
481
- <a href="/free-heic-to-jpg-png-converter/">Free
482
- HEIC to JPG Converter</a>
483
- </li>
484
- <li>
485
- <a href="/free-heic-to-png-converter/">Free HEIC
486
- to PNG Converter</a>
487
- </li>
488
- </ul>
489
- </div>
490
- <div class="slider_inner">
491
- <p class="header_title">More</p>
492
- <ul>
493
- <li>
494
- <a href="/free-pdf-compressor/">Free PDF
495
- Compressor Online</a>
496
- </li>
497
- <li>
498
- <a href="/free-dvd-player/">Free DVD Player
499
- Online</a>
500
- </li>
501
- </ul>
502
- </div>
503
- </div>
504
- </li>
505
- <li class="products">
506
- <span>Desktop Tools</span>
507
- <div class="header_slider">
508
- <div class="slider_inner">
509
- <p>Free Media Software</p>
510
- <ul class="clearfix">
511
- <li>
512
- <a href="/free-ts-converter/">Free TS
513
- Converter</a>
514
- </li>
515
- <li>
516
- <a href="/free-mts-converter/">Free MTS
517
- Converter</a>
518
- </li>
519
- <li>
520
- <a href="/free-flv-to-mp3-converter/">Free FLV to
521
- MP3 Converter</a>
522
- </li>
523
- <li>
524
- <a href="/free-m2ts-converter/">Free M2TS
525
- Converter</a>
526
- </li>
527
- <li>
528
- <a href="/flac-to-mp3-converter/">Free FLAC to
529
- MP3 Converter</a>
530
- </li>
531
- <li>
532
- <a href="/video-to-gif-maker/">Free Video to GIF
533
- Maker</a>
534
- </li>
535
- <li>
536
- <a href="/free-4k-converter/">Free 4K
537
- Converter</a>
538
- </li>
539
- <li>
540
- <a href="/free-flv-converter/">Free FLV
541
- Converter</a>
542
- </li>
543
- <li>
544
- <a href="/free-3d-converter/">Free 3D
545
- Converter</a>
546
- </li>
547
- </ul>
548
  </div>
549
- <div class="slider_inner feature">
550
- <p>Featured Products</p>
551
- <ul class="clearfix">
552
- <li>
553
- <a href="/video-converter-ultimate/"><img src=
554
- "/images/video-converter-ultimate/logo.png" alt=
555
- "Video Converter Ultimate Logo">Video Converter
556
- Ultimate</a><img src="/images/index/hot.png"
557
- loading="lazy" alt="Hot">
558
- </li>
559
- <li>
560
- <a href="/screen-recorder/"><img src=
561
- "/images/screen-recorder/logo-new.png" alt=
562
- "Screen Recorder Logo">Screen Recorder</a>
563
- </li>
564
- <li>
565
- <a href="/video-repair/"><img src=
566
- "/images/video-repair/icon-video-repair.png" alt=
567
- "Video Repair Logo">Video Repair</a>
568
- </li>
569
- </ul>
 
 
 
 
570
  </div>
571
- </div>
572
- </li>
573
- <li>
574
- <a href="/resource/">Resource</a>
575
- </li>
576
- <li class="support">
577
- <a href="/support/">Support</a>
578
- </li>
579
- </ul>
580
- </div>
581
- </div>
582
- <div class="header_bg"></div>
583
- <div id="banner" class="heic_converter">
584
- <div class="container banner_box">
585
- <h1>Qoc Image Upscaler</h1>
586
- <p class="banner_info">Boost your image quality with just one click. No watermarks.</p>
587
-
588
- <div id="drag-zone" draggable="true">
589
- <span id="uploadBtn">Upload<input type="file" name=
590
- "upload" id="upload" accept=
591
- ".jpg, .jpeg, .png, .bmp"></span>
592
- <p>Or drop your image file here!</p>
593
- <div class="scale_choose">
594
- Magnification: <span href="#"><input class="scale_change"
595
- type="radio" name="check_zoom" id="2X" checked value=
596
- "2"><label for="2X">2x</label></span> <span href=
597
- "#"><input class="scale_change" type="radio" name=
598
- "check_zoom" id="4X" value="4"><label for=
599
- "4X">4x</label></span> <span href="#"><input class=
600
- "scale_change" type="radio" name="check_zoom" id="6X"
601
- value="6"><label for="6X">6x</label></span> <span href=
602
- "#"><input class="scale_change" type="radio" name=
603
- "check_zoom" id="8X" value="8"><label for=
604
- "8X">8x</label></span>
605
  </div>
606
- </div>
607
- </div>
608
- </div>
609
-
610
- <a href="https://discord.com/invite/EM4uHQrakm" class="floating-button" target="_blank">
611
- <i class="fab fa-discord"></i> Join Discord
612
- </a>
613
-
614
- <div class="background-footer">
615
- <div class="footer">
616
- <div class="footer-part">
617
-
618
- <div style="clear:both;"></div>
619
  </div>
620
- <p id="copyright">Copyright © 2024 Groqcin Technologies Inc. All rights
621
- reserved.</p>
622
- <p>Please Check Our Other tools <a href="https://huggingface.co/groqcin">Here</a></p>
623
- <p>Thank You For Using Our Image Upscaler</p>
624
- </div>
625
- <script src=
626
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/js-new/image-upscaler.js"></script>
627
-
628
- <script src=
629
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/js/aes.js"></script>
630
-
631
- <script src=
632
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/js/translation.js"></script>
633
-
634
- <script src=
635
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/js/spark-md5.min.js"></script>
636
-
637
- <script src=
638
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/js/FileSaver.js"></script>
639
-
640
- <script src=
641
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/js/free-online-image-upscaler.js"></script>
642
-
643
- <script src=
644
- "https://www.free-videoconverter.net/wp-content/themes/free-videoconverter.net/js/free-online-image-upscaler-check.js"></script><!--
645
- Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/
646
-
647
- Page Caching using disk
648
-
649
- Served from: www.free-videoconverter.net @ 2024-06-10 16:09:50 by W3 Total Cache
650
- -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
651
  </body>
652
- </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
3
  <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Vision AI</title>
7
+ <link href="https://fonts.googleapis.com/css2?family=Inter+Tight:wght@300;400;500;600&display=swap" rel="stylesheet">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script>
10
+ tailwind.config = {
11
+ theme: {
12
+ extend: {
13
+ fontFamily: {
14
+ 'inter-tight': ['Inter Tight', 'system-ui', 'sans-serif']
15
+ }
16
+ }
17
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  }
19
+ </script>
20
+ <style>
21
+ .loading-dots::after {
22
+ content: '';
23
+ display: inline-block;
24
+ animation: loading 1.5s infinite;
25
  }
26
+
27
+ @keyframes loading {
28
+ 0% { content: ''; }
29
+ 25% { content: '.'; }
30
+ 50% { content: '..'; }
31
+ 75% { content: '...'; }
32
+ 100% { content: ''; }
33
+ }
34
+
35
+ .drag-over {
36
+ @apply border-gray-900 bg-gray-50;
37
+ }
38
+
39
+ @keyframes slideIn {
40
+ from {
41
+ transform: translateX(100%);
42
+ opacity: 0;
43
+ }
44
+ to {
45
+ transform: translateX(0);
46
+ opacity: 1;
47
+ }
48
+ }
49
+
50
+ .notification {
51
+ animation: slideIn 0.3s ease;
52
+ }
53
+
54
+ textarea {
55
+ text-align: left !important;
56
+ direction: ltr !important;
57
+ }
58
+
59
+ #questionInput {
60
+ text-align: left !important;
61
+ }
62
+ </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
63
  </head>
64
+ <body class="min-h-screen bg-white text-gray-900 font-inter-tight antialiased">
65
+ <div class="max-w-2xl mx-auto px-6 py-12">
66
+ <!-- Header -->
67
+ <header class="mb-16">
68
+ <div class="flex items-center justify-between mb-8">
69
+ <div>
70
+ <h1 class="text-2xl font-semibold text-gray-900 tracking-tight">Polaroid Vision</h1>
71
+ <p class="text-gray-600 text-sm mt-1">AI-powered image analysis</p>
72
+ </div>
73
+ <div class="w-2 h-2 bg-gray-900 rounded-full"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  </div>
75
+ </header>
76
+
77
+ <!-- Upload Section -->
78
+ <div class="mb-12">
79
+ <!-- Modified dropZone: relative for icon positioning, fixed height -->
80
+ <div id="dropZone" class="border-2 border-dashed border-gray-300 rounded-xl p-12 text-center cursor-pointer transition-all duration-200 hover:border-gray-900 hover:bg-gray-50 bg-gray-25 h-[300px] relative flex items-center justify-center">
81
+ <div id="dropContent" class="space-y-4">
82
+ <div class="mx-auto w-12 h-12 text-gray-400">
83
+ <svg fill="none" stroke="currentColor" viewBox="0 0 24 24" class="w-full h-full">
84
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"/>
85
+ </svg>
86
+ </div>
87
+ <div>
88
+ <p class="text-gray-700 text-base font-medium mb-1">Drop your image here or click to browse</p>
89
+ <p class="text-gray-500 text-sm">Supports JPG, PNG, GIF up to 10MB</p>
90
+ </div>
91
+ </div>
92
+
93
+ <!-- Modified imagePreview: relative for icon positioning, flex column, full height/width -->
94
+ <div id="imagePreview" class="hidden absolute inset-0 flex-col">
95
+ <!-- Modified previewImg: object-contain to fit without cropping -->
96
+ <img id="previewImg" class="w-full h-full object-contain object-center" alt="Preview">
97
+
98
+ <!-- Cross Icon Button: absolute top-right -->
99
+ <button id="removeImage" class="absolute top-3 right-3 p-1.5 rounded-full bg-white/70 hover:bg-white/100 shadow-sm border border-gray-300 text-gray-700 hover:text-gray-900 transition-colors duration-200" aria-label="Remove image">
100
+ <!-- Heroicons X Mark Icon -->
101
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-5 h-5">
102
+ <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12" />
103
+ </svg>
104
+ </button>
105
+ </div>
106
  </div>
107
+
108
+ <input type="file" id="fileInput" accept="image/*" class="hidden">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  </div>
110
+
111
+ <!-- Question Section -->
112
+ <div class="mb-12 space-y-6">
113
+ <div>
114
+ <textarea
115
+ id="questionInput"
116
+ rows="4"
117
+ class="w-full px-4 py-3 border border-gray-300 rounded-lg resize-none focus:ring-2 focus:ring-gray-900 focus:border-transparent text-base placeholder-gray-500 transition-all duration-200 text-left"
118
+ placeholder="What would you like to know about this image?"
119
+ ></textarea>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  </div>
121
+
122
+ <button id="analyzeBtn" disabled class="w-full bg-gray-900 text-white px-6 py-4 rounded-lg font-medium text-base hover:bg-gray-800 disabled:bg-gray-300 disabled:text-gray-500 disabled:cursor-not-allowed transition-all duration-200 focus:ring-2 focus:ring-gray-900 focus:ring-offset-2">
123
+ <span id="analyzeText">Analyze Image</span>
124
+ </button>
125
+ </div>
126
+
127
+ <!-- Results Section -->
128
+ <div id="resultsSection" class="hidden mb-12">
129
+ <div class="border border-gray-200 rounded-xl p-8 bg-gray-50">
130
+ <div class="space-y-6">
131
+ <div>
132
+ <div class="text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2">Question</div>
133
+ <div class="text-gray-900 leading-relaxed" id="questionDisplay"></div>
134
+ </div>
135
+
136
+ <div>
137
+ <div class="text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2">Answer</div>
138
+ <div class="text-gray-900 leading-relaxed text-base" id="answerDisplay"></div>
139
+ </div>
140
+
141
+ <div class="flex justify-between items-center pt-4 border-t border-gray-200 text-xs text-gray-500">
142
+ <span>ID: <span id="requestId" class="font-mono"></span></span>
143
+ <span id="responseTime" class="font-medium"></span>
144
+ </div>
145
+ </div>
146
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  </div>
148
+
149
+ <!-- Footer -->
150
+ <footer class="pt-12 border-t border-gray-100">
151
+ <div class="flex items-center justify-between">
152
+ <p class="text-sm text-gray-500">
153
+ Powered by <a href="https://huggingface.co/polaroidresearch" target="_blank" class="text-gray-700 hover:text-gray-900 font-medium transition-colors duration-200 underline decoration-1 underline-offset-2">Polaroid Vision</a>
154
+ </p>
155
+ <div class="text-xs text-gray-400 font-mono">
156
+ v1.0.0
157
+ </div>
158
+ </div>
159
+ </footer>
 
160
  </div>
161
+
162
+ <script>
163
+ class VisionApp {
164
+ constructor() {
165
+ // API key embedded in the app
166
+ // Note: Exposing API keys in client-side code is a security risk.
167
+ this.apiKey = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXlfaWQiOiJkMjc1N2QwNS04OGRjLTQ4YjUtOGVjNC05Y2M1ODYxYjBmOGMiLCJvcmdfaWQiOiIyUlJuZUVNMGVEblVRWFdjbDZKa3M3Y01vaWdTMmJ2aCIsImlhdCI6MTc1ODYyNzkzNywidmVyIjoxfQ.-Wqw1RXeev4ERwl18R9fefMzvOvSBVMvbVWiR3E-BOE';
168
+ this.currentImage = null;
169
+ this.initializeElements();
170
+ this.bindEvents();
171
+ }
172
+
173
+ initializeElements() {
174
+ this.elements = {
175
+ dropZone: document.getElementById('dropZone'),
176
+ fileInput: document.getElementById('fileInput'),
177
+ dropContent: document.getElementById('dropContent'),
178
+ imagePreview: document.getElementById('imagePreview'),
179
+ previewImg: document.getElementById('previewImg'),
180
+ removeImageBtn: document.getElementById('removeImage'), // Updated reference
181
+ questionInput: document.getElementById('questionInput'),
182
+ analyzeBtn: document.getElementById('analyzeBtn'),
183
+ analyzeText: document.getElementById('analyzeText'),
184
+ resultsSection: document.getElementById('resultsSection'),
185
+ questionDisplay: document.getElementById('questionDisplay'),
186
+ answerDisplay: document.getElementById('answerDisplay'),
187
+ requestId: document.getElementById('requestId'),
188
+ responseTime: document.getElementById('responseTime')
189
+ };
190
+ }
191
+
192
+ bindEvents() {
193
+ // File upload events
194
+ this.elements.dropZone.addEventListener('click', () => this.elements.fileInput.click());
195
+ this.elements.dropZone.addEventListener('dragover', this.handleDragOver.bind(this));
196
+ this.elements.dropZone.addEventListener('dragleave', this.handleDragLeave.bind(this));
197
+ this.elements.dropZone.addEventListener('drop', this.handleDrop.bind(this));
198
+ this.elements.fileInput.addEventListener('change', this.handleFileSelect.bind(this));
199
+ this.elements.removeImageBtn.addEventListener('click', (e) => {
200
+ e.stopPropagation(); // Prevent triggering drop zone click
201
+ this.removeImage();
202
+ });
203
+
204
+ // Question events
205
+ this.elements.questionInput.addEventListener('input', () => this.updateAnalyzeButton());
206
+ this.elements.analyzeBtn.addEventListener('click', () => this.analyzeImage());
207
+ }
208
+
209
+ handleDragOver(e) {
210
+ e.preventDefault();
211
+ this.elements.dropZone.classList.add('drag-over');
212
+ }
213
+
214
+ handleDragLeave(e) {
215
+ e.preventDefault();
216
+ if (!this.elements.dropZone.contains(e.relatedTarget)) {
217
+ this.elements.dropZone.classList.remove('drag-over');
218
+ }
219
+ }
220
+
221
+ handleDrop(e) {
222
+ e.preventDefault();
223
+ this.elements.dropZone.classList.remove('drag-over');
224
+ const files = e.dataTransfer.files;
225
+ if (files.length > 0) {
226
+ this.processFile(files[0]);
227
+ }
228
+ }
229
+
230
+ handleFileSelect(e) {
231
+ if (e.target.files.length > 0) {
232
+ this.processFile(e.target.files[0]);
233
+ }
234
+ }
235
+
236
+ processFile(file) {
237
+ if (!file.type.startsWith('image/')) {
238
+ this.showNotification('Please select a valid image file', 'error');
239
+ return;
240
+ }
241
+
242
+ if (file.size > 10 * 1024 * 1024) {
243
+ this.showNotification('File size should be less than 10MB', 'error');
244
+ return;
245
+ }
246
+
247
+ const reader = new FileReader();
248
+ reader.onload = (e) => {
249
+ this.currentImage = e.target.result;
250
+ this.showImagePreview(file);
251
+ };
252
+ reader.readAsDataURL(file);
253
+ }
254
+
255
+ showImagePreview(file) {
256
+ this.elements.previewImg.src = this.currentImage;
257
+ // this.elements.fileName.textContent = file.name; // Removed filename display
258
+ this.elements.dropContent.classList.add('hidden');
259
+ this.elements.imagePreview.classList.remove('hidden');
260
+ this.updateAnalyzeButton();
261
+ }
262
+
263
+ removeImage() {
264
+ this.currentImage = null;
265
+ this.elements.dropContent.classList.remove('hidden');
266
+ this.elements.imagePreview.classList.add('hidden');
267
+ this.elements.fileInput.value = '';
268
+ this.updateAnalyzeButton();
269
+ }
270
+
271
+ updateAnalyzeButton() {
272
+ const hasImage = this.currentImage !== null;
273
+ const hasQuestion = this.elements.questionInput.value.trim().length > 0;
274
+
275
+ this.elements.analyzeBtn.disabled = !(hasImage && hasQuestion);
276
+ }
277
+
278
+ async analyzeImage() {
279
+ if (!this.currentImage || !this.elements.questionInput.value.trim()) {
280
+ this.showNotification('Please provide an image and question', 'error');
281
+ return;
282
+ }
283
+
284
+ const question = this.elements.questionInput.value.trim();
285
+ this.setLoading(true);
286
+
287
+ try {
288
+ const startTime = Date.now();
289
+ const result = await this.queryMoondream(this.currentImage, question);
290
+ const endTime = Date.now();
291
+ const responseTime = ((endTime - startTime) / 1000).toFixed(1);
292
+
293
+ if (!result || !result.answer) {
294
+ throw new Error('Invalid response from API');
295
+ }
296
+
297
+ this.showResults(question, result.answer, result.request_id, responseTime);
298
+ this.showNotification('Analysis completed successfully', 'success');
299
+
300
+ } catch (error) {
301
+ console.error('Analysis error:', error);
302
+ this.showNotification(`Analysis failed: ${error.message}`, 'error');
303
+ } finally {
304
+ this.setLoading(false);
305
+ }
306
+ }
307
+
308
+ async queryMoondream(imageDataUrl, question) {
309
+ try {
310
+ const requestBody = {
311
+ image_url: imageDataUrl,
312
+ question: question,
313
+ stream: false
314
+ };
315
+
316
+ // Fixed the extra space in the URL
317
+ const response = await fetch('https://api.moondream.ai/v1/query', {
318
+ method: 'POST',
319
+ headers: {
320
+ 'X-Moondream-Auth': this.apiKey,
321
+ 'Content-Type': 'application/json',
322
+ },
323
+ body: JSON.stringify(requestBody)
324
+ });
325
+
326
+ if (!response.ok) {
327
+ const errorText = await response.text();
328
+ let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
329
+ try {
330
+ const errorData = JSON.parse(errorText);
331
+ errorMessage = errorData.message || errorData.error || errorMessage;
332
+ } catch (e) {
333
+ errorMessage = errorText || errorMessage;
334
+ }
335
+ throw new Error(errorMessage);
336
+ }
337
+
338
+ const result = await response.json();
339
+ return {
340
+ answer: result.result || result.answer || 'No answer received',
341
+ request_id: result.request_id || result.id || `req_${Date.now()}`
342
+ };
343
+
344
+ } catch (error) {
345
+ throw new Error(`API request failed: ${error.message}`);
346
+ }
347
+ }
348
+
349
+ setLoading(isLoading) {
350
+ if (isLoading) {
351
+ this.elements.analyzeText.innerHTML = '<span class="loading-dots">Analyzing</span>';
352
+ this.elements.analyzeBtn.disabled = true;
353
+ } else {
354
+ this.elements.analyzeText.textContent = 'Analyze Image';
355
+ this.updateAnalyzeButton();
356
+ }
357
+ }
358
+
359
+ showResults(question, answer, requestId, responseTime) {
360
+ this.elements.questionDisplay.textContent = question;
361
+ this.elements.answerDisplay.textContent = answer;
362
+ this.elements.requestId.textContent = requestId;
363
+ this.elements.responseTime.textContent = `${responseTime}s`;
364
+ this.elements.resultsSection.classList.remove('hidden');
365
+
366
+ // Smooth scroll to results
367
+ this.elements.resultsSection.scrollIntoView({
368
+ behavior: 'smooth',
369
+ block: 'nearest'
370
+ });
371
+ }
372
+
373
+ showNotification(message, type = 'info') {
374
+ const notification = document.createElement('div');
375
+ const bgColor = type === 'error' ? 'bg-red-600' : type === 'success' ? 'bg-green-600' : 'bg-gray-900';
376
+
377
+ notification.className = `notification fixed top-4 right-4 ${bgColor} text-white px-4 py-3 rounded-lg shadow-lg z-50 text-sm font-medium`;
378
+ notification.textContent = message;
379
+
380
+ document.body.appendChild(notification);
381
+
382
+ setTimeout(() => {
383
+ notification.remove();
384
+ }, 4000);
385
+ }
386
+ }
387
+
388
+ // Initialize the app when DOM is loaded
389
+ document.addEventListener('DOMContentLoaded', () => {
390
+ new VisionApp();
391
+ });
392
+ </script>
393
  </body>
394
+ </html>