|
|
<!DOCTYPE html> |
|
|
<html lang="fa" dir="rtl"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>گالری هوشمند FLUX LoRA</title> |
|
|
<link href="https://fonts.googleapis.com/css2?family=Vazirmatn:wght@400;500;600;700;800&display=swap" rel="stylesheet"> |
|
|
<style> |
|
|
:root { |
|
|
--app-font: 'Vazirmatn', sans-serif; |
|
|
--app-bg: #F8F9FC; |
|
|
--panel-bg: #FFFFFF; |
|
|
--panel-border: #EAEFF7; |
|
|
--input-bg: #F6F8FB; |
|
|
--input-border: #E1E7EF; |
|
|
--text-primary: #1A202C; |
|
|
--text-secondary: #626F86; |
|
|
--text-tertiary: #8A94A6; |
|
|
--accent-primary: #4A6CFA; |
|
|
--accent-primary-hover: #3553D6; |
|
|
--accent-primary-glow: rgba(74, 108, 250, 0.25); |
|
|
--accent-secondary: #0FD4A8; |
|
|
--shadow-sm: 0 1px 2px 0 rgba(26, 32, 44, 0.03); |
|
|
--shadow-md: 0 4px 6px -1px rgba(26, 32, 44, 0.05), 0 2px 4px -2px rgba(26, 32, 44, 0.04); |
|
|
--shadow-lg: 0 10px 15px -3px rgba(26, 32, 44, 0.06), 0 4px 6px -4px rgba(26, 32, 44, 0.05); |
|
|
--shadow-xl: 0 20px 25px -5px rgba(26, 32, 44, 0.07), 0 8px 10px -6px rgba(26, 32, 44, 0.05); |
|
|
--radius-card: 24px; |
|
|
--radius-btn: 14px; |
|
|
--radius-input: 12px; |
|
|
--transition-smooth: all 0.35s cubic-bezier(0.4, 0, 0.2, 1); |
|
|
|
|
|
--guide-bg: rgba(255, 255, 255, 0.98); |
|
|
--guide-border: rgba(102, 126, 234, 0.2); |
|
|
--guide-text-title: #2d3748; |
|
|
--guide-text-body: #4a5568; |
|
|
--guide-accent: #667eea; |
|
|
--primary-gradient-guide: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
|
|
--success-gradient-guide: linear-gradient(135deg, #56ab2f 0%, #a8e063 100%); |
|
|
--radius-md-guide: 12px; |
|
|
--radius-lg-guide: 20px; |
|
|
} |
|
|
|
|
|
@keyframes fadeIn { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } |
|
|
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } |
|
|
@keyframes pulse { 0% { box-shadow: 0 0 40px rgba(56, 189, 248, 0.3); } 50% { box-shadow: 0 0 60px rgba(56, 189, 248, 0.7); } 100% { box-shadow: 0 0 40px rgba(56, 189, 248, 0.3); } } |
|
|
@keyframes glow-text { 0% { opacity: 0.7; } 50% { opacity: 1; } 100% { opacity: 0.7; } } |
|
|
@keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } |
|
|
@keyframes slideInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } |
|
|
|
|
|
@keyframes draw-tick { |
|
|
to { |
|
|
stroke-dashoffset: 0; |
|
|
} |
|
|
} |
|
|
|
|
|
body { |
|
|
font-family: var(--app-font); |
|
|
background-color: var(--app-bg); |
|
|
color: var(--text-primary); |
|
|
margin: 0; |
|
|
padding: 2.5rem 1rem; |
|
|
display: flex; |
|
|
justify-content: center; |
|
|
align-items: flex-start; |
|
|
min-height: 100vh; |
|
|
} |
|
|
.container { max-width: 820px; width: 100%; } |
|
|
|
|
|
header { |
|
|
position: relative; |
|
|
text-align: center; |
|
|
margin-bottom: 2.5rem; |
|
|
padding: 2rem 0; |
|
|
animation: fadeIn 0.8s 0.1s ease-out backwards; |
|
|
overflow: hidden; |
|
|
} |
|
|
#neural-network-canvas { |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
z-index: 1; |
|
|
} |
|
|
h1, .subtitle { position: relative; z-index: 2; } |
|
|
h1 { |
|
|
font-size: 2.8rem; |
|
|
font-weight: 800; |
|
|
margin: 0 0 0.8rem 0; |
|
|
background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary)); |
|
|
-webkit-background-clip: text; |
|
|
-webkit-text-fill-color: transparent; |
|
|
letter-spacing: -1px; |
|
|
} |
|
|
.subtitle { font-size: 1.1rem; color: var(--text-secondary); margin-top: 0; max-width: 650px; margin-left: auto; margin-right: auto; line-height: 1.8; } |
|
|
|
|
|
main { |
|
|
padding: 3rem; |
|
|
background-color: var(--panel-bg); |
|
|
border-radius: var(--radius-card); |
|
|
box-shadow: var(--shadow-xl); |
|
|
border: 1px solid var(--panel-border); |
|
|
animation: fadeIn 0.8s 0.3s ease-out backwards; |
|
|
} |
|
|
|
|
|
.form-group { margin-bottom: 2.5rem; } |
|
|
.form-group:last-child { margin-bottom: 0; } |
|
|
|
|
|
.form-label { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 0.75rem; |
|
|
font-weight: 700; |
|
|
color: var(--text-primary); |
|
|
font-size: 1.2em; |
|
|
margin-bottom: 1.2rem; |
|
|
} |
|
|
.form-label svg { width: 24px; height: 24px; color: var(--accent-primary); } |
|
|
|
|
|
textarea { |
|
|
width: 100%; padding: 1rem 1.2rem; border-radius: var(--radius-input); border: 1px solid var(--input-border); |
|
|
background-color: var(--input-bg); color: var(--text-primary); box-shadow: var(--shadow-sm) inset; |
|
|
font-family: var(--app-font); font-size: 1rem; box-sizing: border-box; transition: var(--transition-smooth); |
|
|
min-height: 90px; resize: vertical; |
|
|
} |
|
|
textarea:focus { |
|
|
outline: none; border-color: var(--accent-primary); |
|
|
box-shadow: 0 0 0 3px var(--accent-primary-glow), var(--shadow-sm) inset; background-color: var(--panel-bg); |
|
|
} |
|
|
|
|
|
.style-preview-card { |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 1.5rem; |
|
|
background-color: #fff; |
|
|
border: 1px solid var(--input-border); |
|
|
border-radius: var(--radius-card); |
|
|
padding: 1rem; |
|
|
cursor: pointer; |
|
|
transition: var(--transition-smooth); |
|
|
box-shadow: var(--shadow-md); |
|
|
overflow: hidden; |
|
|
} |
|
|
.style-preview-card:hover { |
|
|
transform: translateY(-5px); |
|
|
box-shadow: var(--shadow-lg); |
|
|
border-color: var(--accent-primary); |
|
|
} |
|
|
#selected-style-image-large { |
|
|
width: 120px; |
|
|
height: 120px; |
|
|
object-fit: cover; |
|
|
border-radius: var(--radius-input); |
|
|
flex-shrink: 0; |
|
|
border: 1px solid var(--panel-border); |
|
|
} |
|
|
.style-preview-info { |
|
|
flex-grow: 1; |
|
|
} |
|
|
.style-preview-info h3 { |
|
|
font-size: 1.5rem; |
|
|
font-weight: 700; |
|
|
color: var(--text-primary); |
|
|
margin: 0 0 0.5rem 0; |
|
|
} |
|
|
.style-preview-info p { |
|
|
font-size: 1rem; |
|
|
color: var(--text-secondary); |
|
|
margin: 0; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
} |
|
|
|
|
|
.tick-wrapper { |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
margin-right: 8px; |
|
|
opacity: 0; |
|
|
transform: scale(0.5) translateY(4px); |
|
|
transition: opacity 0.3s ease, transform 0.3s ease; |
|
|
} |
|
|
.tick-wrapper.show { |
|
|
opacity: 1; |
|
|
transform: scale(1) translateY(0); |
|
|
} |
|
|
.tick-svg { |
|
|
width: 22px; |
|
|
height: 22px; |
|
|
} |
|
|
.tick-path { |
|
|
stroke: var(--accent-secondary); |
|
|
stroke-width: 3; |
|
|
stroke-linecap: round; |
|
|
stroke-linejoin: round; |
|
|
fill: none; |
|
|
stroke-dasharray: 24; |
|
|
stroke-dashoffset: 24; |
|
|
} |
|
|
.tick-wrapper.show .tick-path { |
|
|
animation: draw-tick 0.4s 0.2s ease-out forwards; |
|
|
} |
|
|
|
|
|
.aspect-ratio-selector { |
|
|
display: grid; |
|
|
grid-template-columns: repeat(4, 1fr); |
|
|
gap: 1rem; |
|
|
} |
|
|
.ratio-option { |
|
|
background-color: var(--input-bg); |
|
|
border: 2px solid var(--input-border); |
|
|
border-radius: var(--radius-input); |
|
|
padding: 1rem; |
|
|
cursor: pointer; |
|
|
transition: var(--transition-smooth); |
|
|
text-align: center; |
|
|
} |
|
|
.ratio-option:hover { |
|
|
border-color: var(--accent-primary); |
|
|
transform: translateY(-4px); |
|
|
box-shadow: var(--shadow-md); |
|
|
} |
|
|
.ratio-option.active { |
|
|
border-color: var(--accent-primary); |
|
|
background-color: #fff; |
|
|
box-shadow: 0 0 0 3px var(--accent-primary-glow); |
|
|
} |
|
|
.ratio-icon { |
|
|
height: 50px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
justify-content: center; |
|
|
margin: 0 auto 0.75rem; |
|
|
} |
|
|
.ratio-icon > div, .ratio-icon > svg { |
|
|
background-color: var(--panel-bg); |
|
|
border: 2px solid var(--text-tertiary); |
|
|
border-radius: 6px; |
|
|
transition: var(--transition-smooth); |
|
|
box-sizing: border-box; |
|
|
} |
|
|
.ratio-option.active .ratio-icon > div, |
|
|
.ratio-option.active .ratio-icon > svg { |
|
|
border-color: var(--accent-primary); |
|
|
background-color: var(--accent-primary-glow); |
|
|
} |
|
|
.ratio-label { |
|
|
font-weight: 600; |
|
|
color: var(--text-secondary); |
|
|
font-size: 0.9rem; |
|
|
transition: color 0.2s; |
|
|
} |
|
|
.ratio-option.active .ratio-label { color: var(--text-primary); } |
|
|
|
|
|
#icon-portrait > div { width: 28px; height: 50px; } |
|
|
#icon-landscape > div { width: 60px; height: 34px; } |
|
|
#icon-square > div { width: 45px; height: 45px; } |
|
|
#icon-custom > svg { width: 45px; height: 45px; padding: 8px; color: var(--text-tertiary); } |
|
|
.ratio-option.active #icon-custom > svg { color: var(--accent-primary); } |
|
|
.custom-ratio-value { font-size: 0.75rem; color: var(--text-secondary); margin-top: 2px; height: 1em; } |
|
|
|
|
|
|
|
|
#submit-btn { |
|
|
display: flex; align-items: center; justify-content: center; gap: 0.75rem; width: 100%; padding: 1.1rem; |
|
|
font-size: 1.2rem; font-weight: 700; background: linear-gradient(95deg, var(--accent-secondary) 0%, var(--accent-primary) 100%); |
|
|
color: #fff; border: none; border-radius: var(--radius-btn); cursor: pointer; transition: all 0.3s ease; |
|
|
box-shadow: 0 6px 12px -3px var(--accent-primary-glow), 0 6px 12px -3px var(--accent-secondary-glow); margin-top: 1.5rem; |
|
|
} |
|
|
#submit-btn svg { width: 24px; height: 24px; margin-left: 4px; filter: drop-shadow(0 0 5px rgba(255,255,255,0.5)); } |
|
|
#submit-btn:hover:not(:disabled) { transform: translateY(-5px) scale(1.02); box-shadow: 0 8px 20px -4px var(--accent-primary-glow), 0 8px 20px -4px var(--accent-secondary-glow); } |
|
|
#submit-btn:disabled { background: var(--text-tertiary); cursor: not-allowed; box-shadow: none; opacity: 0.7; } |
|
|
#submit-btn .spinner { width: 20px; height: 20px; border: 3px solid rgba(255, 255, 255, 0.4); border-top-color: #fff; border-radius: 50%; animation: spin 0.8s linear infinite; display: none; } |
|
|
|
|
|
|
|
|
.download-button { |
|
|
display: flex; align-items: center; justify-content: center; gap: 0.75rem; |
|
|
width: 100%; max-width: 280px; margin: 1.5rem auto 0; padding: 0.9rem; |
|
|
font-size: 1rem; font-weight: 600; |
|
|
background: var(--accent-primary); color: #fff; border: none; |
|
|
border-radius: var(--radius-btn); cursor: pointer; transition: all 0.3s ease; |
|
|
box-shadow: var(--shadow-md); |
|
|
} |
|
|
.download-button svg { width: 20px; height: 20px; } |
|
|
.download-button:hover:not(:disabled) { |
|
|
background: var(--accent-primary-hover); |
|
|
transform: translateY(-3px); |
|
|
box-shadow: var(--shadow-lg); |
|
|
} |
|
|
.download-button:disabled { |
|
|
background: var(--text-tertiary); |
|
|
cursor: not-allowed; |
|
|
opacity: 0.8; |
|
|
} |
|
|
|
|
|
|
|
|
#result-container { min-height: 250px; position: relative; padding: 1rem; background-color: var(--input-bg); border-radius: var(--radius-card); border: 2px dashed var(--input-border); box-shadow: var(--shadow-sm) inset; transition: var(--transition-smooth); display: flex; align-items: center; justify-content: center; flex-direction: column; box-sizing: border-box; } |
|
|
#result-container.loading, |
|
|
#result-container.has-error-guide { |
|
|
padding: 0; |
|
|
border: none; |
|
|
background-color: transparent; |
|
|
box-shadow: none; |
|
|
} |
|
|
#result-container.has-content { border-style: solid; border-color: var(--panel-border); padding: 1rem; } |
|
|
#loading-placeholder { display: none; } |
|
|
#result-container.loading #loading-placeholder { display: flex; animation: fadeIn 0.5s; justify-content: center; align-items: center; width: 100%; } |
|
|
|
|
|
.generator-container { position: relative; width: 100%; max-width: 500px; height: 200px; border: 2px solid #38bdf8; border-radius: 20px; overflow: hidden; box-shadow: 0 0 40px rgba(56, 189, 248, 0.3); animation: pulse 5s infinite cubic-bezier(0.4, 0, 0.6, 1); background-color: #161b22; color: #f0f6fc; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 1rem; } |
|
|
.text-overlay { font-size: 18px; font-weight: 700; text-shadow: 0 0 20px rgba(56, 189, 248, 0.8); animation: glow-text 7s infinite ease-in-out; text-align: center; } |
|
|
.progress-bar { position: absolute; bottom: 0; left: 0; width: 0%; height: 6px; background: linear-gradient(to right, #38bdf8, #bb86fc, #facc15); transition: width 1s linear; } |
|
|
|
|
|
#result-image-wrapper { display: none; width: 100%; } |
|
|
#result-container.has-content #result-image-wrapper { display: block; animation: fadeIn 0.5s; text-align: center; } |
|
|
#result-image-display { max-width: 100%; max-height: 500px; object-fit: contain; border-radius: var(--radius-input); box-shadow: var(--shadow-md); border: 1px solid var(--panel-border); } |
|
|
.error-message { color: #d93025; font-weight: bold; margin-top: 10px; background: #ffebee; padding: 1rem; border-radius: var(--radius-input); border: 1px solid #e57373; } |
|
|
|
|
|
.output-details { display: none !important; } |
|
|
|
|
|
.modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(18, 24, 38, 0.6); backdrop-filter: blur(10px) saturate(150%); display: none; justify-content: center; align-items: center; z-index: 1000; animation: fadeIn 0.3s ease; } |
|
|
.modal-content { |
|
|
background: var(--panel-bg); |
|
|
padding: 2rem 1rem; |
|
|
border-radius: var(--radius-card); |
|
|
width: 90%; |
|
|
max-width: 1100px; |
|
|
height: 90%; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
position: relative; |
|
|
box-shadow: var(--shadow-xl); |
|
|
border: 1px solid var(--panel-border); |
|
|
} |
|
|
.modal-header { display: flex; justify-content: center; align-items: center; border-bottom: 1px solid var(--panel-border); padding-bottom: 1rem; margin-bottom: 1.5rem; position: relative; min-height: 50px;} |
|
|
.modal-header h2 { margin: 0; font-size: 1.8rem; font-weight: 700; color: var(--text-primary); } |
|
|
.close-btn { position: absolute; top: -10px; left: -10px; background: var(--input-bg); border: 1px solid var(--input-border); font-size: 2rem; font-weight: 400; cursor: pointer; color: var(--text-secondary); transition: all 0.2s ease; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 50%; } |
|
|
.close-btn:hover { color: var(--text-primary); background-color: var(--panel-border); transform: scale(1.1); } |
|
|
|
|
|
#lora-grid { |
|
|
overflow-y: auto; |
|
|
display: grid; |
|
|
grid-template-columns: repeat(4, 1fr); |
|
|
gap: 1rem; |
|
|
padding: 10px; |
|
|
} |
|
|
.lora-card { |
|
|
position: relative; |
|
|
height: 0; |
|
|
padding-bottom: 100%; |
|
|
border-radius: var(--radius-input); |
|
|
overflow: hidden; |
|
|
cursor: pointer; |
|
|
transition: var(--transition-smooth); |
|
|
background-color: var(--input-bg); |
|
|
border: 1px solid transparent; |
|
|
box-shadow: var(--shadow-sm); |
|
|
-webkit-user-select: none; |
|
|
user-select: none; |
|
|
} |
|
|
|
|
|
.lora-card:hover { |
|
|
transform: translateY(-5px); |
|
|
box-shadow: var(--shadow-lg); |
|
|
border-color: var(--accent-primary); |
|
|
} |
|
|
|
|
|
.lora-card img { |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
object-fit: cover; |
|
|
transition: opacity 0.3s ease-in-out; |
|
|
opacity: 0; |
|
|
} |
|
|
.lora-card img.loaded { |
|
|
opacity: 1; |
|
|
} |
|
|
|
|
|
.ip-reset-guide-container { text-align: right; background: var(--panel-bg); padding: 10px; border-radius: var(--radius-lg-guide); animation: slideInUp 0.6s cubic-bezier(0.4, 0, 0.2, 1) both; max-width: 100%; width: 100%; position: relative; overflow: hidden; box-sizing: border-box; } |
|
|
.ip-reset-guide-container::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 5px; background: var(--primary-gradient-guide); } |
|
|
.guide-header { display: flex; align-items: center; margin-bottom: 20px; position: relative; } |
|
|
.guide-header-icon { width: 50px; height: 50px; margin-left: 15px; animation: float 3s ease-in-out infinite; flex-shrink: 0; } |
|
|
.guide-header h2 { font-size: 1.2rem; color: var(--guide-text-title); font-weight: 700; margin: 0; } |
|
|
.guide-header p { color: var(--guide-text-body); font-size: 0.85rem; margin-top: 5px; } |
|
|
.guide-content { font-size: 0.95rem; color: var(--guide-text-body); line-height: 1.8; } |
|
|
.info-card { background: linear-gradient(135deg, #667eea15 0%, #764ba215 100%); border: 1px solid rgba(102, 126, 234, 0.2); border-radius: var(--radius-md-guide); padding: 15px; margin: 15px 0; position: relative; overflow: hidden; } |
|
|
.info-card p { font-size: 0.85rem; line-height: 1.7; } |
|
|
.info-card::before { content: ''; position: absolute; top: 0; right: 0; width: 4px; height: 100%; background: var(--primary-gradient-guide); } |
|
|
.info-card-header { display: flex; align-items: center; margin-bottom: 10px; } |
|
|
.info-card-icon { width: 22px; height: 22px; margin-left: 10px; } |
|
|
.info-card-title { font-weight: 600; color: var(--guide-text-title); font-size: 1rem; } |
|
|
.summary-section { margin-top: 20px; padding: 15px; border-radius: var(--radius-md-guide); background: linear-gradient(135deg, #56ab2f15 0%, #a8e06315 100%); border: 1px solid rgba(86, 171, 47, 0.2); position: relative; overflow: hidden; } |
|
|
.summary-section::before { content: ''; position: absolute; top: 0; right: 0; width: 4px; height: 100%; background: var(--success-gradient-guide); } |
|
|
.summary-header { display: flex; align-items: center; margin-bottom: 10px; } |
|
|
.summary-icon { width: 22px; height: 22px; margin-left: 10px; } |
|
|
.summary-title { font-weight: 600; color: #2f5a33; font-size: 1rem; } |
|
|
.summary-text { color: #2f5a33; font-size: 0.9rem; line-height: 1.7; } |
|
|
.guide-actions { display: flex; gap: 15px; margin-top: 25px; padding-top: 20px; border-top: 1px solid #e2e8f0; } |
|
|
.action-button { padding: 12px 20px; border: none; border-radius: var(--radius-md-guide); font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: inherit; flex: 1; transition: var(--transition-smooth); position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; } |
|
|
.action-button-icon { width: 18px; height: 18px; margin-right: 8px; margin-left: 0; } |
|
|
.back-button { background: white; color: var(--guide-text-body); border: 2px solid #e2e8f0; flex: 0.4; } |
|
|
.back-button:hover { background: #f7fafc; border-color: var(--guide-accent); transform: translateY(-2px); box-shadow: var(--shadow-md); } |
|
|
.retry-button { background: var(--primary-gradient-guide); color: white; flex: 0.6; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); } |
|
|
.retry-button:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4); } |
|
|
.video-button-container { text-align: center; margin: 25px 0 10px 0; } |
|
|
.elegant-video-button { display: inline-flex; align-items: center; justify-content: center; padding: 7px 18px; background-color: #f0f2f5; color: var(--guide-accent); border: 1px solid #e2e8f0; text-decoration: none; border-radius: var(--radius-md-guide); font-weight: 600; font-size: 0.8rem; cursor: pointer; font-family: inherit; transition: all 0.3s ease; box-shadow: var(--shadow-sm); } |
|
|
.elegant-video-button:hover { background: var(--primary-gradient-guide); color: white; border-color: transparent; transform: translateY(-2px); box-shadow: 0 6px 16px rgba(102, 126, 234, 0.3); } |
|
|
.elegant-video-button-icon { width: 16px; height: 16px; margin-left: 8px; fill: currentColor; } |
|
|
|
|
|
.style-info-box { |
|
|
display: inline-flex; |
|
|
align-items: center; |
|
|
gap: 12px; |
|
|
padding: 8px 15px; |
|
|
background-color: var(--input-bg); |
|
|
border: 1px solid var(--accent-primary-glow); |
|
|
border-radius: var(--radius-btn); |
|
|
transition: all 0.3s ease; |
|
|
box-shadow: var(--shadow-sm); |
|
|
} |
|
|
.style-info-box .style-info-image { |
|
|
width: 44px; |
|
|
height: 44px; |
|
|
border-radius: 10px; |
|
|
object-fit: cover; |
|
|
flex-shrink: 0; |
|
|
} |
|
|
.style-info-box .style-info-text { |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
align-items: flex-start; |
|
|
} |
|
|
.style-info-box .persian-name { |
|
|
font-weight: 700; |
|
|
color: var(--text-primary); |
|
|
font-size: 1.1rem; |
|
|
} |
|
|
.style-info-box .english-name { |
|
|
font-size: 0.85rem; |
|
|
color: var(--text-secondary); |
|
|
margin-top: 2px; |
|
|
font-weight: 500; |
|
|
} |
|
|
|
|
|
.modal-content-small { background: var(--panel-bg); padding: 2rem; border-radius: var(--radius-card); max-width: 350px; width: 90%; text-align: center; box-shadow: var(--shadow-xl); position: relative; } |
|
|
.modal-content-small h3 { margin-top: 0; margin-bottom: 1.5rem; font-size: 1.5rem; color: var(--text-primary); } |
|
|
.modal-content-small .input-group { margin-bottom: 1rem; text-align: right; } |
|
|
.modal-content-small label { display: block; margin-bottom: 0.5rem; font-weight: 600; color: var(--text-secondary); font-size: 0.9rem; } |
|
|
.modal-content-small input { width: 100%; padding: 0.8rem 1rem; border-radius: var(--radius-input); border: 1px solid var(--input-border); background-color: var(--input-bg); color: var(--text-primary); box-shadow: var(--shadow-sm) inset; font-family: var(--app-font); font-size: 1rem; box-sizing: border-box; transition: var(--transition-smooth); } |
|
|
.modal-content-small input:focus { outline: none; border-color: var(--accent-primary); box-shadow: 0 0 0 3px var(--accent-primary-glow), var(--shadow-sm) inset; background-color: var(--panel-bg); } |
|
|
#confirm-custom-size-btn { width: 100%; padding: 0.9rem; margin-top: 1rem; font-size: 1rem; font-weight: 700; background-color: var(--accent-primary); color: #fff; border: none; border-radius: var(--radius-btn); cursor: pointer; transition: var(--transition-smooth); } |
|
|
#confirm-custom-size-btn:hover { background-color: var(--accent-primary-hover); } |
|
|
#close-custom-modal-btn { position: absolute; top: 10px; left: 10px; background: transparent; border: none; font-size: 2rem; cursor: pointer; color: var(--text-tertiary); line-height: 1; padding: 0.5rem; } |
|
|
|
|
|
|
|
|
@media (max-width: 768px) { |
|
|
main { padding: 1.5rem; } h1 { font-size: 2.2rem; } |
|
|
.aspect-ratio-selector { grid-template-columns: repeat(2, 1fr); } |
|
|
.style-preview-card { flex-direction: column; text-align: center; gap: 1rem; } |
|
|
#selected-style-image-large { margin-left: 0; } |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body> |
|
|
<div class="container"> |
|
|
<header> |
|
|
<canvas id="neural-network-canvas"></canvas> |
|
|
<h1>خلق تصاویر شگفت انگیز با هوش مصنوعی</h1> |
|
|
<p class="subtitle">ایدههای خود را با بیش از ۲۲۰ سبک هنری منحصربهفرد، به تصویر بکشید.</p> |
|
|
</header> |
|
|
<main> |
|
|
<div class="form-group"> |
|
|
<div class="form-label"> |
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"/><path d="m15 5 4 4"/></svg> |
|
|
۱. ایده خود را توصیف کنید |
|
|
</div> |
|
|
<textarea id="prompt-input" rows="3" placeholder="مثال: یک جنگل جادویی در شب با قارچ های درخشان"></textarea> |
|
|
</div> |
|
|
|
|
|
<div class="form-group"> |
|
|
<div class="form-label"> |
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg> |
|
|
۲. سبک هنری را انتخاب کنید |
|
|
</div> |
|
|
<div id="style-preview-container" class="style-preview-card"> |
|
|
<img id="selected-style-image-large" src="" alt="پیشنمایش سبک"> |
|
|
<div class="style-preview-info"> |
|
|
<h3 id="selected-style-name-fa">سبکی انتخاب نشده</h3> |
|
|
<p>برای انتخاب یا تغییر سبک هنری، روی این کادر کلیک کنید.</p> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="form-group"> |
|
|
<div class="form-label"> |
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 9V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h4"/><rect x="12" y="13" width="10" height="8" rx="2"/><path d="M17 12v-1a2 2 0 0 0-2-2h-1"/></svg> |
|
|
۳. اندازه تصویر را انتخاب کنید |
|
|
</div> |
|
|
<div class="aspect-ratio-selector" id="aspect-ratio-selector"> |
|
|
<div class="ratio-option" data-ratio="9:16"> |
|
|
<div class="ratio-icon" id="icon-portrait"><div></div></div> |
|
|
<div class="ratio-label">عمودی ۹:۱۶</div> |
|
|
</div> |
|
|
<div class="ratio-option" data-ratio="16:9"> |
|
|
<div class="ratio-icon" id="icon-landscape"><div></div></div> |
|
|
<div class="ratio-label">افقی ۱۶:۹</div> |
|
|
</div> |
|
|
<div class="ratio-option" data-ratio="custom"> |
|
|
<div class="ratio-icon" id="icon-custom"> |
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> |
|
|
<path d="M21 16V8a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8"/> |
|
|
<circle cx="18" cy="18" r="3"/> |
|
|
<path d="M18 15v-2"/><path d="M18 21v-2"/> |
|
|
<path d="M15 18h-2"/><path d="M21 18h-2"/> |
|
|
</svg> |
|
|
</div> |
|
|
<div class="ratio-label"> |
|
|
اندازه دلخواه |
|
|
<div class="custom-ratio-value" id="custom-ratio-label-value"></div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="ratio-option active" data-ratio="1:1"> |
|
|
<div class="ratio-icon" id="icon-square"><div></div></div> |
|
|
<div class="ratio-label">مربع ۱:۱</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<button id="submit-btn" disabled> |
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3L12 8L17 10L12 12L10 17L8 12L3 10L8 8L10 3z"/></svg> |
|
|
<span id="btn-text">در حال اتصال...</span> |
|
|
<div class="spinner" style="display: inline-block;"></div> |
|
|
</button> |
|
|
|
|
|
<div class="form-group" style="margin-top: 3rem; margin-bottom: 0;"> |
|
|
<div class="form-label"> |
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3L12 8L17 10L12 12L10 17L8 12L3 10L8 8L10 3z"/><path d="M21 14l-1.5 3-3-1.5 3-3 1.5 3z"/><path d="M19.5 2.5l-3 1.5 1.5 3 3-1.5-1.5-3z"/></svg> |
|
|
۴. نتیجه را ببینید |
|
|
</div> |
|
|
<div id="result-container"> |
|
|
|
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="output-details" id="output-details"></div> |
|
|
</main> |
|
|
</div> |
|
|
|
|
|
<div class="modal-overlay" id="style-modal"> |
|
|
<div class="modal-content"> |
|
|
<div class="modal-header"> |
|
|
<h2>انتخاب سبک (LoRA)</h2> |
|
|
<button class="close-btn" id="close-modal-btn">×</button> |
|
|
</div> |
|
|
<div id="lora-grid"></div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="modal-overlay" id="custom-size-modal"> |
|
|
<div class="modal-content-small"> |
|
|
<button id="close-custom-modal-btn">×</button> |
|
|
<h3>تنظیم اندازه دلخواه</h3> |
|
|
<div class="input-group"> |
|
|
<label for="custom-width-input">عرض (Width)</label> |
|
|
<input type="number" id="custom-width-input" value="1024" min="512" max="1536" step="8" placeholder="بین ۵۱۲ تا ۱۵۳۶"> |
|
|
</div> |
|
|
<div class="input-group"> |
|
|
<label for="custom-height-input">طول (Height)</label> |
|
|
<input type="number" id="custom-height-input" value="1024" min="512" max="1536" step="8" placeholder="بین ۵۱۲ تا ۱۵۳۶"> |
|
|
</div> |
|
|
<button id="confirm-custom-size-btn">تایید و اعمال</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<script type="module"> |
|
|
import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js"; |
|
|
|
|
|
const loras = [ |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Dalle-Mix-LoRA/resolve/main/images/D3.png", |
|
|
"title": "Dalle Mix", |
|
|
"repo": "prithivMLmods/Flux-Dalle-Mix-LoRA", |
|
|
"trigger_word": "dalle-mix" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/c7af01_25IMG-20251101-092015-384.jpg", |
|
|
"title": "Koda", |
|
|
"repo": "alvdansen/flux-koda", |
|
|
"trigger_word": "flmft style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Super-Realism-LoRA/resolve/main/images/1.png", |
|
|
"title": "Super Realism", |
|
|
"repo": "strangerzonehf/Flux-Super-Realism-LoRA", |
|
|
"trigger_word": "Super Realism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Ghibli-Flux-Cartoon-LoRA/resolve/main/images/3333.png", |
|
|
"title": "Ghibli Flux", |
|
|
"repo": "strangerzonehf/Ghibli-Flux-Cartoon-LoRA", |
|
|
"trigger_word": "Ghibli Art" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Sketch-Smudge-LoRA/resolve/main/images/5.png", |
|
|
"title": "Sketch_Smudge", |
|
|
"repo": "strangerzonehf/Flux-Sketch-Smudge-LoRA", |
|
|
"trigger_word": " Sketch Smudge" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Animeo-v1-LoRA/resolve/main/images/A4.png", |
|
|
"title": "Animeo Mix", |
|
|
"repo": "strangerzonehf/Flux-Animeo-v1-LoRA", |
|
|
"trigger_word": "Animeo" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Animex-v2-LoRA/resolve/main/images/A33.png", |
|
|
"title": "Animex Mix", |
|
|
"repo": "strangerzonehf/Flux-Animex-v2-LoRA", |
|
|
"trigger_word": "Animex" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Super-Portrait-LoRA/resolve/main/images/3.png", |
|
|
"title": "Super Portraits", |
|
|
"repo": "strangerzonehf/Flux-Super-Portrait-LoRA", |
|
|
"trigger_word": "Super Portrait" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Super-Blend-LoRA/resolve/main/images/SB1.png", |
|
|
"title": "Super Blend", |
|
|
"repo": "strangerzonehf/Flux-Super-Blend-LoRA", |
|
|
"trigger_word": "Super Blend" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Midjourney-Mix2-LoRA/resolve/main/images/3.png", |
|
|
"title": "Midjourney Mix 2", |
|
|
"repo": "strangerzonehf/Flux-Midjourney-Mix2-LoRA", |
|
|
"trigger_word": "MJ v6" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Ultimate-LoRA-Collection/resolve/main/images/example_aqz3dv60n.jpeg", |
|
|
"title": "SHOU_XIN", |
|
|
"repo": "Datou1111/shou_xin", |
|
|
"trigger_word": "shou_xin, pencil sketch" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Long-Toon-LoRA/resolve/main/images/LT5.png", |
|
|
"title": "Long Toons", |
|
|
"repo": "prithivMLmods/Flux-Long-Toon-LoRA", |
|
|
"trigger_word": "Long toons" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Cute-3D-Kawaii-LoRA/resolve/main/images/CK3.png", |
|
|
"title": "Cute 3D Kawaii", |
|
|
"repo": "strangerzonehf/Flux-Cute-3D-Kawaii-LoRA", |
|
|
"trigger_word": "Cute 3d Kawaii" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Isometric-3D-LoRA/resolve/main/images/ID2.png", |
|
|
"title": "Isometric 3D", |
|
|
"repo": "strangerzonehf/Flux-Isometric-3D-LoRA", |
|
|
"trigger_word": "Isometric 3D" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Toonic-2.5D-LoRA/resolve/main/images/T2.png", |
|
|
"title": "Toon 2.5D", |
|
|
"repo": "prithivMLmods/Flux-Toonic-2.5D-LoRA", |
|
|
"trigger_word": "toonic 2.5D" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-YWL-Realism-LoRA/resolve/main/images/R3.png", |
|
|
"title": "YWL Realism", |
|
|
"repo": "strangerzonehf/Flux-YWL-Realism-LoRA", |
|
|
"trigger_word": "ylw realism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Chill-Guy-Zone/resolve/main/images/8.png", |
|
|
"title": "Chill Guy", |
|
|
"repo": "prithivMLmods/Flux-Chill-Guy-Zone", |
|
|
"trigger_word": "chill guy" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/p1atdev/flux.1-schnell-pvc-style-lora/resolve/main/images/flux_lora_00221_.png", |
|
|
"title": "Anime PVC Style", |
|
|
"repo": "p1atdev/flux.1-schnell-pvc-style-lora", |
|
|
"trigger_word": "pvc figure, nendoroid, figma" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-C4C-Design-LoRA/resolve/main/images/4.png", |
|
|
"title": "Smiley C4C", |
|
|
"repo": "strangerzonehf/Flux-C4C-Design-LoRA", |
|
|
"trigger_word": "Smiley C4C" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/bba301_25images-6-.jpeg", |
|
|
"title": "Purple Dream", |
|
|
"repo": "prithivMLmods/Purple-Dreamy-Flux-LoRA", |
|
|
"trigger_word": "Purple Dreamy" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-LoRA-Flux-FaceRealism/resolve/main/images/11.png", |
|
|
"title": "Flux Face Realism", |
|
|
"repo": "prithivMLmods/Canopus-LoRA-Flux-FaceRealism", |
|
|
"trigger_word": "Realism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/softserve_anime/resolve/main/images/ComfyUI_00134_.png", |
|
|
"title": "Softserve Anime", |
|
|
"repo": "alvdansen/softserve_anime", |
|
|
"trigger_word": "sftsrv style illustration" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Fashion-Hut-Modeling-LoRA/resolve/main/images/MO1.png", |
|
|
"title": "Modeling Hut", |
|
|
"repo": "prithivMLmods/Fashion-Hut-Modeling-LoRA", |
|
|
"trigger_word": "Modeling of" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-One-Click-Creative-Template/resolve/main/images/f2cc649985648e57b9b9b14ca7a8744ac8e50d75b3a334ed4df0f368.jpg", |
|
|
"title": "Creative Template", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-One-Click-Creative-Template", |
|
|
"trigger_word": "The background is 4 real photos, and in the middle is a cartoon picture summarizing the real photos." |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-LoRA-Flux-UltraRealism-2.0/resolve/main/images/XX.png", |
|
|
"title": "Ultra Realism", |
|
|
"repo": "prithivMLmods/Canopus-LoRA-Flux-UltraRealism-2.0", |
|
|
"trigger_word": "Ultra realistic" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/gokaygokay/Flux-Game-Assets-LoRA-v2/resolve/main/images/example_y2bqpuphc.png", |
|
|
"title": "Game Assets", |
|
|
"repo": "gokaygokay/Flux-Game-Assets-LoRA-v2", |
|
|
"trigger_word": "wbgmsst, white background" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/c7e301_25IMG-20251101-092232-481.jpg", |
|
|
"title": "Softpasty", |
|
|
"repo": "alvdansen/softpasty-flux-dev", |
|
|
"trigger_word": "araminta_illus illustration style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-add-details/resolve/main/images/0.png", |
|
|
"title": "Details Add", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-add-details", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-LoRA-Flux-Anime/resolve/main/assets/4.png", |
|
|
"title": "Flux Anime", |
|
|
"repo": "prithivMLmods/Canopus-LoRA-Flux-Anime", |
|
|
"trigger_word": "Anime" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/aleksa-codes/flux-ghibsky-illustration/resolve/main/images/example5.jpg", |
|
|
"title": "Ghibsky Illustration", |
|
|
"repo": "aleksa-codes/flux-ghibsky-illustration", |
|
|
"trigger_word": "GHIBSKY style painting" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Dark-Fantasy/resolve/main/images/c2215bd73da9f14fcd63cc93350e66e2901bdafa6fb8abaaa2c32a1b.jpg", |
|
|
"title": "Dark Fantasy", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-Dark-Fantasy", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Norod78/Flux_1_Dev_LoRA_Paper-Cutout-Style/resolve/main/d13591878d5043f3989dd6eb1c25b710_233c18effb4b491cb467ca31c97e90b5.png", |
|
|
"title": "Paper Cutout", |
|
|
"repo": "Norod78/Flux_1_Dev_LoRA_Paper-Cutout-Style", |
|
|
"trigger_word": "Paper Cutout Style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/mooniverse/resolve/main/images/out-0%20(17).webp", |
|
|
"title": "Mooniverse", |
|
|
"repo": "alvdansen/mooniverse", |
|
|
"trigger_word": "surreal style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/pola-photo-flux/resolve/main/images/out-0%20-%202024-09-22T130819.351.webp", |
|
|
"title": "Pola Photo", |
|
|
"repo": "alvdansen/pola-photo-flux", |
|
|
"trigger_word": "polaroid style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/multimodalart/flux-tarot-v1/resolve/main/images/7e180627edd846e899b6cd307339140d_5b2a09f0842c476b83b6bd2cb9143a52.png", |
|
|
"title": "Flux Tarot", |
|
|
"repo": "multimodalart/flux-tarot-v1", |
|
|
"trigger_word": "in the style of TOK a trtcrd tarot style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/577501_25IMG-20251101-083119-187.jpg", |
|
|
"title": "Real Anime", |
|
|
"repo": "prithivMLmods/Flux-Dev-Real-Anime-LoRA", |
|
|
"trigger_word": "Real Anime" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/diabolic6045/Flux_Sticker_Lora/resolve/main/images/example_s3pxsewcb.png", |
|
|
"title": "Stickers", |
|
|
"repo": "diabolic6045/Flux_Sticker_Lora", |
|
|
"trigger_word": "5t1cker 5ty1e" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/VideoAditor/Flux-Lora-Realism/resolve/main/images/feel-the-difference-between-using-flux-with-lora-from-xlab-v0-j0ehybmvxehd1.png", |
|
|
"title": "Realism", |
|
|
"repo": "XLabs-AI/flux-RealismLora", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/mgwr/Cine-Aesthetic/resolve/main/images/00019-1333633802.png", |
|
|
"title": "Cine Aesthetic", |
|
|
"repo": "mgwr/Cine-Aesthetic", |
|
|
"trigger_word": "mgwr/cine" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/SebastianBodza/flux_cute3D/resolve/main/images/astronaut.webp", |
|
|
"title": "Cute 3D", |
|
|
"repo": "SebastianBodza/flux_cute3D", |
|
|
"trigger_word": "NEOCUTE3D" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/bingbangboom/flux_dreamscape/resolve/main/images/3.jpg", |
|
|
"title": "Dreamscape", |
|
|
"repo": "bingbangboom/flux_dreamscape", |
|
|
"trigger_word": "in the style of BSstyle004" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-LoRA-Flux-FaceRealism/resolve/main/images/xc.webp", |
|
|
"title": "Cute Kawaii", |
|
|
"repo": "prithivMLmods/Canopus-Cute-Kawaii-Flux-LoRA", |
|
|
"trigger_word": "cute-kawaii" |
|
|
}, |
|
|
{ |
|
|
"image": "https://cdn-uploads.huggingface.co/production/uploads/64b24543eec33e27dc9a6eca/_jyra-jKP_prXhzxYkg1O.png", |
|
|
"title": "Pastel Anime", |
|
|
"repo": "Raelina/Flux-Pastel-Anime", |
|
|
"trigger_word": "Anime" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Vector-Journey/resolve/main/images/f7a66b51c89896854f31bef743dc30f33c6ea3c0ed8f9ff04d24b702.jpg", |
|
|
"title": "Vector", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-Vector-Journey", |
|
|
"trigger_word": "artistic style blends reality and illustration elements" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/bingbangboom/flux-miniature-worlds/resolve/main/images/2.jpg", |
|
|
"title": "Miniature", |
|
|
"repo": "bingbangboom/flux-miniature-worlds", |
|
|
"trigger_word": "Image in the style of MNTRWRLDS" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/bingbangboom_flux_surf/resolve/main/samples/1729012111574__000002000_0.jpg", |
|
|
"title": "Surf Bingbangboom", |
|
|
"repo": "glif-loradex-trainer/bingbangboom_flux_surf", |
|
|
"trigger_word": "SRFNGV01" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-Snoopy-Charlie-Brown-Flux-LoRA/resolve/main/000.png", |
|
|
"title": "Snoopy Charlie", |
|
|
"repo": "prithivMLmods/Canopus-Snoopy-Charlie-Brown-Flux-LoRA", |
|
|
"trigger_word": "Snoopy Charlie Brown" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/sonny-anime-fixed/resolve/main/images/uqAuIMqA6Z7mvPkHg4qJE_f4c3cbe64e0349e7b946d02adeacdca3.png", |
|
|
"title": "Fixed Sonny", |
|
|
"repo": "alvdansen/sonny-anime-fixed", |
|
|
"trigger_word": "nm22 style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/davisbro/flux-multi-angle/resolve/main/multi-angle-examples/3.png", |
|
|
"title": "Multi Angle", |
|
|
"repo": "davisbro/flux-multi-angle", |
|
|
"trigger_word": "A TOK composite photo of a person posing at different angles" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif/how2draw/resolve/main/images/glif-how2draw-araminta-k-vbnvy94npt8m338r2vm02m50.jpg", |
|
|
"title": "How2Draw", |
|
|
"repo": "glif/how2draw", |
|
|
"trigger_word": "How2Draw" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Text-Poster/resolve/main/images/6dd1a918d89991ad5e40513ab88e7d892077f89dac93edcf4b660dd2.jpg", |
|
|
"title": "Text Poster", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-Text-Poster", |
|
|
"trigger_word": "text poster" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/SebastianBodza/Flux_Aquarell_Watercolor_v2/resolve/main/images/coffee.webp", |
|
|
"title": "Aquarell Watercolor", |
|
|
"repo": "SebastianBodza/Flux_Aquarell_Watercolor_v2", |
|
|
"trigger_word": "AQUACOLTOK" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Purz/face-projection/resolve/main/34031797.jpeg", |
|
|
"title": "Face Projection ", |
|
|
"repo": "Purz/face-projection", |
|
|
"trigger_word": "f4c3_p40j3ct10n" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/martintomov/ecom-flux-v2/resolve/main/images/example_z30slf97z.png", |
|
|
"title": "Ecom Design Art", |
|
|
"repo": "martintomov/ecom-flux-v2", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/TheAwakenOne/max-headroom/resolve/main/sample/max-headroom_000900_00_20241015234926.png", |
|
|
"title": "Max Head-Room", |
|
|
"repo": "TheAwakenOne/max-headroom", |
|
|
"trigger_word": "M2X, Max-Headroom" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/renderartist/toyboxflux/resolve/main/images/3D__00366_.png", |
|
|
"title": "Toy Box Flux", |
|
|
"repo": "renderartist/toyboxflux", |
|
|
"trigger_word": "t0yb0x, simple toy design, detailed toy design, 3D render" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-live-3D/resolve/main/images/51a716fb6fe9ba5d54c260b70e7ff661d38acedc7fb725552fa77bcf.jpg", |
|
|
"title": "Live 3D", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-live-3D", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Garbage-Bag-Art/resolve/main/images/42e944819b43869a03dc252d10409b5944a62494c7082816121016f9.jpg", |
|
|
"title": "Garbage Bag Art", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-Garbage-Bag-Art", |
|
|
"trigger_word": "Inflatable plastic bag" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Logo-Design/resolve/main/images/73e7db6a33550d05836ce285549de60075d05373c7b0660d631dac33.jpg", |
|
|
"title": "Logo Design", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-Logo-Design", |
|
|
"trigger_word": "wablogo, logo, Minimalist" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/punzel/flux_sadie_sink/resolve/main/images/ComfyUI_Flux_Finetune_00069_.png", |
|
|
"title": "Sadie Sink", |
|
|
"repo": "punzel/flux_sadie_sink", |
|
|
"trigger_word": "Sadie Sink" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/punzel/flux_jenna_ortega/resolve/main/images/ComfyUI_Flux_Finetune_00065_.png", |
|
|
"title": "Jenna ortega", |
|
|
"repo": "punzel/flux_jenna_ortega", |
|
|
"trigger_word": "Jenna ortega" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Wakkamaruh/balatro-poker-cards/resolve/main/samples/01.png", |
|
|
"title": "Poker Cards", |
|
|
"repo": "Wakkamaruh/balatro-poker-cards", |
|
|
"trigger_word": "balatrocard" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/lichorosario/flux-cubist-cartoon/resolve/main/samples/albert-einstein.png", |
|
|
"title": "Cubist Cartoon", |
|
|
"repo": "lichorosario/flux-cubist-cartoon", |
|
|
"trigger_word": "CBSTCRTN" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/iliketoasters/miniature-people/resolve/main/images/1757-over%20the%20shoulder%20shot%2C%20raw%20photo%2C%20a%20min-fluxcomfy-orgflux1-dev-fp8-128443497-converted.png", |
|
|
"title": "Miniature People", |
|
|
"repo": "iliketoasters/miniature-people", |
|
|
"trigger_word": "miniature people" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/ampp/rough-kids-illustrations/resolve/main/samples/1725115106736__000001000_0.jpg", |
|
|
"title": "kids Illustrations", |
|
|
"repo": "ampp/rough-kids-illustrations", |
|
|
"trigger_word": "r0ughkids4rt" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/lichorosario/flux-lora-tstvctr/resolve/main/images/example_mo3jx93o6.png", |
|
|
"title": "TSTVCTR Cartoon", |
|
|
"repo": "lichorosario/flux-lora-tstvctr", |
|
|
"trigger_word": "TSTVCTR cartoon illustration" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/lichorosario/flux-lora-gliff-tosti-vector-no-captions-2500s/resolve/main/images/example_i6h6fi9sq.png", |
|
|
"title": "Tosti Vector", |
|
|
"repo": "lichorosario/flux-lora-gliff-tosti-vector-no-captions-2500s", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/AlekseyCalvin/Propaganda_Poster_Schnell_by_doctor_diffusion/resolve/main/Trashy.png", |
|
|
"title": "Propaganda Poster", |
|
|
"repo": "AlekseyCalvin/Propaganda_Poster_Schnell_by_doctor_diffusion", |
|
|
"trigger_word": "propaganda poster" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/WizWhite/Wiz-PunchOut_Ringside_Portrait/resolve/main/images/punch0ut__ringside_pixel_portrait_depicting_chris_brown_wearing_a_veil__moonstone_gray_background_with_white_ropes___1923906484.png", |
|
|
"title": "Ringside Portrait", |
|
|
"repo": "WizWhite/Wiz-PunchOut_Ringside_Portrait", |
|
|
"trigger_word": "punch0ut, ringside pixel portrait depicting" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/kklors_flux_dev_long_exposure/resolve/main/samples/1729016926778__000003000_3.jpg", |
|
|
"title": "Long Exposure", |
|
|
"repo": "glif-loradex-trainer/kklors_flux_dev_long_exposure", |
|
|
"trigger_word": "LE" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/DamarJati/streetwear-flux/resolve/main/img/79e891f9-ceb8-4f8a-a51d-bb432789d037.jpeg", |
|
|
"title": "Street Wear", |
|
|
"repo": "DamarJati/streetwear-flux", |
|
|
"trigger_word": "Handling Information Tshirt template" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-NTFv4-Designs-LoRA/resolve/main/images/6.png", |
|
|
"title": "NFT V4", |
|
|
"repo": "strangerzonehf/Flux-NFTv4-Designs-LoRA", |
|
|
"trigger_word": "NFT V4" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/multimodalart/product-design/resolve/main/images/example_vgv87rlfl.png", |
|
|
"title": "Product Design", |
|
|
"repo": "multimodalart/product-design", |
|
|
"trigger_word": "product designed by prdsgn" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-LoRA-Flux-Typography-ASCII/resolve/main/images/NNN.png", |
|
|
"title": "Typography", |
|
|
"repo": "prithivMLmods/Canopus-LoRA-Flux-Typography-ASCII", |
|
|
"trigger_word": "Typography, ASCII Art" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/mateo-19182/mosoco/resolve/main/samples/1725714834007__000002000_0.jpg", |
|
|
"title": "Mosoco", |
|
|
"repo": "mateo-19182/mosoco", |
|
|
"trigger_word": "moscos0" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/jakedahn/flux-latentpop/resolve/main/images/2.webp", |
|
|
"title": "Latent Pop", |
|
|
"repo": "jakedahn/flux-latentpop", |
|
|
"trigger_word": "latentpop" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/ddickinson_dstyl3xl/resolve/main/samples/1728556571974__000001500_2.jpg", |
|
|
"title": "Dstyl3xl", |
|
|
"repo": "glif-loradex-trainer/ddickinson_dstyl3xl", |
|
|
"trigger_word": "in the style of dstyl3xl" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/465e01_25IMG-20251101-084306-021.jpg", |
|
|
"title": "Retouch FLux", |
|
|
"repo": "TDN-M/RetouchFLux", |
|
|
"trigger_word": "luxury, enhance, hdr" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif/anime-blockprint-style/resolve/main/images/glif-block-print-anime-flux-dev-araminta-k-lora-araminta-k-e35k8xqsrb8dtq2qcv4gsr3z.jpg", |
|
|
"title": "Block Print", |
|
|
"repo": "glif/anime-blockprint-style", |
|
|
"trigger_word": "blockprint style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/renderartist/weirdthingsflux/resolve/main/images/3D__02303_.png", |
|
|
"title": "Weird Things Flux", |
|
|
"repo": "renderartist/weirdthingsflux", |
|
|
"trigger_word": "w3irdth1ngs, illustration" |
|
|
}, |
|
|
{ |
|
|
"image": "https://replicate.delivery/yhqm/z7f2OBcvga07dCoJ4FeRGZCbE5PvipLhogPhEeU7BazIg5lmA/out-0.webp", |
|
|
"title": "Replicate Flux LoRA", |
|
|
"repo": "lucataco/ReplicateFluxLoRA", |
|
|
"trigger_word": "TOK" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/haunted_linework_flux/resolve/main/images/ComfyUI_00755_.png", |
|
|
"title": "Linework", |
|
|
"repo": "alvdansen/haunted_linework_flux", |
|
|
"trigger_word": "hntdlnwrk style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/fofr/flux-cassette-futurism/resolve/main/images/example_qgry9jnkj.png", |
|
|
"title": "Cassette Futurism", |
|
|
"repo": "fofr/flux-cassette-futurism", |
|
|
"trigger_word": "cassette futurism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Wadaka/Mojo_Style_LoRA/resolve/main/Samples/Sample2.png", |
|
|
"title": "Mojo Style", |
|
|
"repo": "Wadaka/Mojo_Style_LoRA", |
|
|
"trigger_word": "Mojo_Style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Norod78/JojosoStyle-flux-lora/resolve/main/samples/1725244218477__000004255_1.jpg", |
|
|
"title": "Jojoso Style", |
|
|
"repo": "Norod78/JojosoStyle-flux-lora", |
|
|
"trigger_word": "JojosoStyle" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Chunte/flux-lora-Huggieverse/resolve/main/images/Happy%20star.png", |
|
|
"title": "Huggieverse", |
|
|
"repo": "Chunte/flux-lora-Huggieverse", |
|
|
"trigger_word": "HGGRE" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/diabolic6045/Flux_Wallpaper_Lora/resolve/main/images/example_hjp51et93.png", |
|
|
"title": "Wallpaper LoRA", |
|
|
"repo": "diabolic6045/Flux_Wallpaper_Lora", |
|
|
"trigger_word": "wallpap3r5" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/bingbangboom/flux_geopop/resolve/main/extras/5.png", |
|
|
"title": "Geo Pop", |
|
|
"repo": "bingbangboom/flux_geopop", |
|
|
"trigger_word": "illustration in the style of NWGMTRCPOPV01" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/bingbangboom/flux_colorscape/resolve/main/images/4.jpg", |
|
|
"title": "Colorscape", |
|
|
"repo": "bingbangboom/flux_colorscape", |
|
|
"trigger_word": "illustration in the style of ASstyle001" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/dvyio/flux-lora-thermal-image/resolve/main/images/WROSaNNU4-Gw0r5QoBRjf_f164ffa4f0804e68bad1d06d30deecfa.jpg", |
|
|
"title": "Thermal Image", |
|
|
"repo": "dvyio/flux-lora-thermal-image", |
|
|
"trigger_word": "thermal image in the style of THRML" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-Clothing-Flux-LoRA/resolve/main/images/333.png", |
|
|
"title": "Clothing Flux", |
|
|
"repo": "prithivMLmods/Canopus-Clothing-Flux-LoRA", |
|
|
"trigger_word": "Hoodie, Clothes, Shirt, Pant" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/dvyio/flux-lora-stippled-illustration/resolve/main/images/57FPpbu74QTV45w6oNOtZ_26832270585f456c99e4a98b1c073745.jpg", |
|
|
"title": "Stippled Illustration", |
|
|
"repo": "dvyio/flux-lora-stippled-illustration", |
|
|
"trigger_word": "stippled illustration in the style of STPPLD" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/wayned/fruitlabels/resolve/main/images/ComfyUI_03969_.png", |
|
|
"title": "Fruitlabels", |
|
|
"repo": "wayned/fruitlabels", |
|
|
"trigger_word": "fruit labels" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/punzel/flux_margot_robbie/resolve/main/images/ComfyUI_Flux_Finetune_00142_.png", |
|
|
"title": "Margot Robbie", |
|
|
"repo": "punzel/flux_margot_robbie", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/diabolic6045/Formula1_Lego_Lora/resolve/main/images/example_502kcuiba.png", |
|
|
"title": "Formula 1 Lego", |
|
|
"repo": "punzel/flux_margot_robbie", |
|
|
"trigger_word": "f1leg0s" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif/Brain-Melt-Acid-Art/resolve/main/images/IMG_0832.png", |
|
|
"title": "Melt Acid", |
|
|
"repo": "glif/Brain-Melt-Acid-Art", |
|
|
"trigger_word": "in an acid surrealism style, maximalism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/jeremytai/enso-zen/resolve/main/images/example_a0iwdj5lu.png", |
|
|
"title": "Enso", |
|
|
"repo": "jeremytai/enso-zen", |
|
|
"trigger_word": "enso" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/veryVANYA/opus-ascii-flux/resolve/main/31654332.jpeg", |
|
|
"title": "Opus Ascii", |
|
|
"repo": "veryVANYA/opus-ascii-flux", |
|
|
"trigger_word": "opus_ascii" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/crystantine/cybrpnkz/resolve/main/images/example_plyxk0lej.png", |
|
|
"title": "Cybrpnkz", |
|
|
"repo": "crystantine/cybrpnkz", |
|
|
"trigger_word": "architecture style of CYBRPNKZ" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/fyp1/pattern_generation/resolve/main/images/1727560066052__000001000_7.jpg", |
|
|
"title": "Pattern Generation", |
|
|
"repo": "fyp1/pattern_generation", |
|
|
"trigger_word": "pattern" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/TheAwakenOne/caricature/resolve/main/sample/caricature_000900_03_20241007143412.png", |
|
|
"title": "Caricature", |
|
|
"repo": "TheAwakenOne/caricature", |
|
|
"trigger_word": "CCTUR3" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-3DXL-Partfile-C0001/resolve/main/images/C3.png", |
|
|
"title": "3DXLC1", |
|
|
"repo": "strangerzonehf/Flux-3DXL-Partfile-C0001", |
|
|
"trigger_word": "3DXLC1" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Purz/neon-sign/resolve/main/33944768.jpeg", |
|
|
"title": "Neon", |
|
|
"repo": "Purz/neon-sign", |
|
|
"trigger_word": "n30n_51gn" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/WizWhite/wizard-s-vintage-sardine-tins/resolve/main/27597694.jpeg", |
|
|
"title": "Vintage Sardine Tins", |
|
|
"repo": "WizWhite/wizard-s-vintage-sardine-tins", |
|
|
"trigger_word": "Vintage Sardine Tin, Tinned Fish, vintage xyz tin" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/TheAwakenOne/mtdp-balloon-character/resolve/main/sample/mtdp-balloon-character_000200_01_20241014221110.png", |
|
|
"title": "Float Ballon Character", |
|
|
"repo": "TheAwakenOne/mtdp-balloon-character", |
|
|
"trigger_word": "FLOAT" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif/golden-haggadah/resolve/main/images/6aca6403-ecd6-4216-a66a-490ae25ff1b2.jpg", |
|
|
"title": "Golden Haggadah", |
|
|
"repo": "glif/golden-haggadah", |
|
|
"trigger_word": "golden haggadah style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/usernametaken420__oz_ftw_balaclava/resolve/main/samples/1729278631255__000001500_1.jpg", |
|
|
"title": "Ftw Balaclava", |
|
|
"repo": "glif-loradex-trainer/usernametaken420__oz_ftw_balaclava", |
|
|
"trigger_word": "ftw balaclava" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/AlloReview/flux-lora-undraw/resolve/main/images/Flux%20Lora%20Undraw%20Prediction.webp", |
|
|
"title": "Undraw", |
|
|
"repo": "AlloReview/flux-lora-undraw", |
|
|
"trigger_word": "in the style of UndrawPurple" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Disra/lora-anime-test-02/resolve/main/assets/image_0_0.png", |
|
|
"title": "Anime Test", |
|
|
"repo": "Disra/lora-anime-test-02", |
|
|
"trigger_word": "anime" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/wanghaofan/Black-Myth-Wukong-FLUX-LoRA/resolve/main/images/7d0ac495a4d5e4a3a30df25f08379a3f956ef99e1dc3e252fc1fca3a.jpg", |
|
|
"title": "Black Myth Wukong", |
|
|
"repo": "wanghaofan/Black-Myth-Wukong-FLUX-LoRA", |
|
|
"trigger_word": "wukong" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/nerijs/pastelcomic-flux/resolve/main/images/4uZ_vaYg-HQnfa5D9gfli_38bf3f95d8b345e5a9bd42d978a15267.png", |
|
|
"title": "Pastelcomic", |
|
|
"repo": "nerijs/pastelcomic-flux", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/RareConcepts/Flux.1-dev-LoKr-Moonman/resolve/main/assets/image_6_0.png", |
|
|
"title": "Moonman", |
|
|
"repo": "RareConcepts/Flux.1-dev-LoKr-Moonman", |
|
|
"trigger_word": "moonman" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/martintomov/ascii-flux-v1/resolve/main/images/0af53645-ddcc-4803-93c8-f7e43f6fbbd1.jpeg", |
|
|
"title": "Ascii Flux", |
|
|
"repo": "martintomov/ascii-flux-v1", |
|
|
"trigger_word": "ASCII art" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Omarito2412/Stars-Galaxy-Flux/resolve/main/images/25128409.jpeg", |
|
|
"title": "Stars Galaxy", |
|
|
"repo": "Omarito2412/Stars-Galaxy-Flux", |
|
|
"trigger_word": "mlkwglx" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/brushpenbob/flux-pencil-v2/resolve/main/26193927.jpeg", |
|
|
"title": "Pencil V2", |
|
|
"repo": "brushpenbob/flux-pencil-v2", |
|
|
"trigger_word": "evang style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Children-Simple-Sketch/resolve/main/images/1f20519208cef367af2fda8d91ddbba674f39b097389d12ee25b4cb1.jpg", |
|
|
"title": "Children Simple Sketch", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-Children-Simple-Sketch", |
|
|
"trigger_word": "sketched style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/victor/contemporarink/resolve/main/images/example_hnqc22urm.png", |
|
|
"title": "Contemporarink", |
|
|
"repo": "victor/contemporarink", |
|
|
"trigger_word": "ECACX" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/wavymulder/OverlordStyleFLUX/resolve/main/imgs/ComfyUI_00668_.png", |
|
|
"title": "OverlordStyle", |
|
|
"repo": "wavymulder/OverlordStyleFLUX", |
|
|
"trigger_word": "ovld style anime" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/busetolunay/building_flux_lora_v1/resolve/main/samples/1725469125185__000001250_2.jpg", |
|
|
"title": "Building Flux", |
|
|
"repo": "busetolunay/building_flux_lora_v1", |
|
|
"trigger_word": "a0ce" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Omarito2412/Tinker-Bell-Flux/resolve/main/images/9e9e7eda-3ddf-467a-a7f8-6d8e3ef80cd0.png", |
|
|
"title": "Tinker Bell Flux", |
|
|
"repo": "Omarito2412/Tinker-Bell-Flux", |
|
|
"trigger_word": "TinkerWaifu, blue eyes, single hair bun" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-playful-metropolis/resolve/main/images/3e9265312b3b726c224a955ec9254a0f95c2c8b78ce635929183a075.jpg", |
|
|
"title": "Playful Metropolis", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-playful-metropolis", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-Character-Polygon-LoRA/resolve/main/images/1000.webp", |
|
|
"title": "Character Polygon", |
|
|
"repo": "prithivMLmods/Castor-Character-Polygon-Flux-LoRA", |
|
|
"trigger_word": "3D Polygon" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-Gta6-Theme-Flux-LoRA/resolve/main/images/gta1.webp", |
|
|
"title": "GTA 6 Theme", |
|
|
"repo": "prithivMLmods/Castor-Gta6-Theme-Flux-LoRA", |
|
|
"trigger_word": "GTA 6 Theme, World of GTA 6" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/17f601_252321884.jpeg", |
|
|
"title": "GTA Character Concept", |
|
|
"repo": "prithivMLmods/Castor-Flux-Concept-Gta6-Character-Design", |
|
|
"trigger_word": "Jason, Lucia, GTA 6" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-3D-Sketchfab-Flux-LoRA/resolve/main/images/S1.png", |
|
|
"title": "3D Sketchfab", |
|
|
"repo": "prithivMLmods/Castor-3D-Sketchfab-Flux-LoRA", |
|
|
"trigger_word": "3D Sketchfab" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-Collage-Dim-Flux-LoRA/resolve/main/images/C1.webp", |
|
|
"title": "In Image Collage", |
|
|
"repo": "prithivMLmods/Castor-Collage-Dim-Flux-LoRA", |
|
|
"trigger_word": "collage" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/brushpenbob/flux-midjourney-anime/resolve/main/25439344.jpeg", |
|
|
"title": "Anime Journey", |
|
|
"repo": "brushpenbob/flux-midjourney-anime", |
|
|
"trigger_word": "egmid" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/maxxd4240_minimalistPastel/resolve/main/samples/1727255690613__000002500_0.jpg", |
|
|
"title": "Min Pastel", |
|
|
"repo": "glif-loradex-trainer/maxxd4240_minimalistPastel", |
|
|
"trigger_word": "minimalistPastel" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-Red-Dead-Redemption-2-Flux-LoRA/resolve/main/images/rdr12.webp", |
|
|
"title": "RDR2", |
|
|
"repo": "prithivMLmods/Castor-Red-Dead-Redemption-2-Flux-LoRA", |
|
|
"trigger_word": "Red Dead Redemption 2" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/WizWhite/wizard-s-paper-model-universe/resolve/main/35746354.jpeg", |
|
|
"title": "Paper Model", |
|
|
"repo": "WizWhite/wizard-s-paper-model-universe", |
|
|
"trigger_word": "A paper model" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/renderartist/retrocomicflux/resolve/main/images/ComfyUI_temp_ipugi_00040_.png", |
|
|
"title": "Retrocomic Flux", |
|
|
"repo": "renderartist/retrocomicflux", |
|
|
"trigger_word": "comic book panel" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-Happy-Halloween-Flux-LoRA/resolve/main/images/hw1.webp", |
|
|
"title": "Halloween Flux", |
|
|
"repo": "prithivMLmods/Castor-Happy-Halloween-Flux-LoRA", |
|
|
"trigger_word": "happy halloween" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-3D-Portrait-Flux-LoRA/resolve/main/images/1.webp", |
|
|
"title": "Castor-3D-Portrait", |
|
|
"repo": "prithivMLmods/Castor-3D-Portrait-Flux-LoRA", |
|
|
"trigger_word": "3D Portrait" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/renderartist/coloringbookflux/resolve/main/images/ComfyUI_09731_.png", |
|
|
"title": "Coloring book flux", |
|
|
"repo": "renderartist/coloringbookflux", |
|
|
"trigger_word": "c0l0ringb00k, coloring book, coloring book page" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Uncoloured-Polygon-Flux-LoRA/resolve/main/images/1.webp", |
|
|
"title": "Uncoloured Polygon", |
|
|
"repo": "prithivMLmods/Uncoloured-Polygon-Flux-LoRA", |
|
|
"trigger_word": "uncoloured polygon" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Past-Present-Deep-Mix-Flux-LoRA/resolve/main/images/PP3.webp", |
|
|
"title": "Past Present Mix", |
|
|
"repo": "prithivMLmods/Past-Present-Deep-Mix-Flux-LoRA", |
|
|
"trigger_word": "Mixing Past and Present" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Mockup-Texture-Flux-LoRA/resolve/main/images/MU1.webp", |
|
|
"title": "Mockup Texture", |
|
|
"repo": "prithivMLmods/Mockup-Texture-Flux-LoRA", |
|
|
"trigger_word": "Mockup" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Ton618-Tarot-Cards-Flux-LoRA/resolve/main/images/c2.webp", |
|
|
"title": "Tarot Cards", |
|
|
"repo": "prithivMLmods/Ton618-Tarot-Cards-Flux-LoRA", |
|
|
"trigger_word": "Tarot card" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Ton618-Amxtoon-Flux-LoRA/resolve/main/images/am1.webp", |
|
|
"title": "Amxtoon", |
|
|
"repo": "prithivMLmods/Ton618-Amxtoon-Flux-LoRA", |
|
|
"trigger_word": "Amxtoon" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Ton618-Epic-Realism-Flux-LoRA/resolve/main/images/ep3.png", |
|
|
"title": "Epic Realism", |
|
|
"repo": "prithivMLmods/Ton618-Epic-Realism-Flux-LoRA", |
|
|
"trigger_word": "Epic Realism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/bingbangboom/flux-mixReality/resolve/main/images/3.jpg", |
|
|
"title": "Mixed Reality", |
|
|
"repo": "bingbangboom/flux-mixReality", |
|
|
"trigger_word": "in the style of HLFILSTHLFPHTO" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/sWizad/pokemon-trainer-sprites-pixelart-flux/resolve/main/26578919.jpeg", |
|
|
"title": "Pixelart", |
|
|
"repo": "sWizad/pokemon-trainer-sprites-pixelart-flux", |
|
|
"trigger_word": "pixel image of, pixel art" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/UmeAiRT/FLUX.1-dev-LoRA-Modern_Pixel_art/resolve/main/images/c363192f-5fa0-4539-8295-b8d9e3e96747.jpeg", |
|
|
"title": "Modern Pixel art", |
|
|
"repo": "UmeAiRT/FLUX.1-dev-LoRA-Modern_Pixel_art", |
|
|
"trigger_word": "umempart" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Ton618-Only-Stickers-Flux-LoRA/resolve/main/images/222.png", |
|
|
"title": "Sticker", |
|
|
"repo": "prithivMLmods/Ton618-Only-Stickers-Flux-LoRA", |
|
|
"trigger_word": "Only Sticker" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-Pixar-3D-Flux-LoRA/resolve/main/images/11111.png", |
|
|
"title": "Pixar 3D", |
|
|
"repo": "prithivMLmods/Canopus-Pixar-3D-Flux-LoRA", |
|
|
"trigger_word": "Pixar 3D" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/EBook-Creative-Cover-Flux-LoRA/resolve/main/images/E2.png", |
|
|
"title": "EBook Cover", |
|
|
"repo": "prithivMLmods/EBook-Creative-Cover-Flux-LoRA", |
|
|
"trigger_word": "EBook Cover" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Minimal-Futuristic-Flux-LoRA/resolve/main/images/MF3.png", |
|
|
"title": "Minimal Futuristic", |
|
|
"repo": "prithivMLmods/Minimal-Futuristic-Flux-LoRA", |
|
|
"trigger_word": "Minimal Futuristic" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Seamless-Pattern-Design-Flux-LoRA/resolve/main/images/SP1.png", |
|
|
"title": "Seamless Pattern", |
|
|
"repo": "prithivMLmods/Seamless-Pattern-Design-Flux-LoRA", |
|
|
"trigger_word": "Seamless Pattern Design" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Logo-Design-Flux-LoRA/resolve/main/images/LD1.png", |
|
|
"title": "Logo Design", |
|
|
"repo": "prithivMLmods/Logo-Design-Flux-LoRA", |
|
|
"trigger_word": "Logo Design" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Coloring-Book-Flux-LoRA/resolve/main/images/EB1.png", |
|
|
"title": "Coloring Book", |
|
|
"repo": "prithivMLmods/Coloring-Book-Flux-LoRA", |
|
|
"trigger_word": "Coloring Book" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Intense-Red-Flux-LoRA/resolve/main/images/IR1.png", |
|
|
"title": "Intense Red", |
|
|
"repo": "prithivMLmods/Intense-Red-Flux-LoRA", |
|
|
"trigger_word": "Intense Red" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Glowing-Body-Flux-LoRA/resolve/main/images/GB3.png", |
|
|
"title": "Glowing Body Flux", |
|
|
"repo": "prithivMLmods/Glowing-Body-Flux-LoRA", |
|
|
"trigger_word": "Glowing Body" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Electric-Blue-Flux-LoRA/resolve/main/images/EB3.png", |
|
|
"title": "Electric Blue", |
|
|
"repo": "prithivMLmods/Electric-Blue-Flux-LoRA", |
|
|
"trigger_word": "Electric Blue" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Clouds-Illusion-Flux-LoRA/resolve/main/images/CI2.png", |
|
|
"title": "Clouds Illusion", |
|
|
"repo": "prithivMLmods/Clouds-Illusion-Flux-LoRA", |
|
|
"trigger_word": "Clouds Illusion" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Digital-Yellow-Flux-LoRA/resolve/main/images/DY3.png", |
|
|
"title": "Digital Yellow", |
|
|
"repo": "prithivMLmods/Digital-Yellow-Flux-LoRA", |
|
|
"trigger_word": "Digital Yellow" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/cfahlgren1/flux-qwen-capybara/resolve/main/images/example_72ao6twvk.png", |
|
|
"title": "Flux Qwen Capybara", |
|
|
"repo": "cfahlgren1/flux-qwen-capybara", |
|
|
"trigger_word": "QWENCAPY" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/dasdsff/PleinAirArt/resolve/main/images/e7499ccc-7504-4086-842f-275a5428ef0e.jpg", |
|
|
"title": "Plein Air Art ", |
|
|
"repo": "dasdsff/PleinAirArt", |
|
|
"trigger_word": "P1e!n" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Orange-Chroma-Flux-LoRA/resolve/main/images/OC1.png", |
|
|
"title": "Orange Chroma", |
|
|
"repo": "prithivMLmods/Orange-Chroma-Flux-LoRA", |
|
|
"trigger_word": "Orange Chroma" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Lime-Green-Flux-LoRA/resolve/main/images/LM1.png", |
|
|
"title": "Lime Green", |
|
|
"repo": "prithivMLmods/Lime-Green-Flux-LoRA", |
|
|
"trigger_word": "Lime Green" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Fractured-Line-Flare/resolve/main/images/FS1.png", |
|
|
"title": "Line Flare", |
|
|
"repo": "prithivMLmods/Fractured-Line-Flare", |
|
|
"trigger_word": "Fractured Line Flare" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Golden-Dust-Flux-LoRA/resolve/main/images/GD2.png", |
|
|
"title": "Golden Dust", |
|
|
"repo": "prithivMLmods/Golden-Dust-Flux-LoRA", |
|
|
"trigger_word": "Golden Dust" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Castor-Dramatic-Neon-Flux-LoRA/resolve/main/images/DN2.webp", |
|
|
"title": "Dramatic Neon", |
|
|
"repo": "prithivMLmods/Castor-Dramatic-Neon-Flux-LoRA", |
|
|
"trigger_word": "Dramatic Neon" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/tryonlabs/FLUX.1-dev-LoRA-Outfit-Generator/resolve/main/images/sample7.jpeg", |
|
|
"title": "Outfit Generator", |
|
|
"repo": "tryonlabs/FLUX.1-dev-LoRA-Outfit-Generator", |
|
|
"trigger_word": "Outfit" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/davisbro/half_illustration/resolve/main/images/example1.webp", |
|
|
"title": "Half Illustration", |
|
|
"repo": "davisbro/half_illustration", |
|
|
"trigger_word": "in the style of TOK" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/bingbangboom/flux_oilscape/resolve/main/extras/3.jpg", |
|
|
"title": "Oilscape", |
|
|
"repo": "bingbangboom/flux_oilscape", |
|
|
"trigger_word": "in the style of Oilstyle002" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Red-Undersea-Flux-LoRA/resolve/main/images/RU1.png", |
|
|
"title": "Red Undersea Flux", |
|
|
"repo": "prithivMLmods/Red-Undersea-Flux-LoRA", |
|
|
"trigger_word": "Red Undersea" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/3D-Render-Flux-LoRA/resolve/main/images/3D2.png", |
|
|
"title": "3D Render Flux LoRA", |
|
|
"repo": "prithivMLmods/3D-Render-Flux-LoRA", |
|
|
"trigger_word": "3D Portrait, 3d render" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Yellow-Pop-Flux-Dev-LoRA/resolve/main/images/YP1.png", |
|
|
"title": "Yellow Pop Flux", |
|
|
"repo": "prithivMLmods/Yellow-Pop-Flux-Dev-LoRA", |
|
|
"trigger_word": "Yellow Pop" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Purple-Grid-Flux-LoRA/resolve/main/images/PG2.png", |
|
|
"title": "Purple Grid Flux", |
|
|
"repo": "prithivMLmods/Purple-Grid-Flux-LoRA", |
|
|
"trigger_word": "Purple Grid" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Dark-Thing-Flux-LoRA/resolve/main/images/DT2.png", |
|
|
"title": "Dark Thing Flux", |
|
|
"repo": "prithivMLmods/Dark-Thing-Flux-LoRA", |
|
|
"trigger_word": "Dark Creature" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Shadow-Projection-Flux-LoRA/resolve/main/images/SP2.png", |
|
|
"title": "Shadow Projection", |
|
|
"repo": "prithivMLmods/Shadow-Projection-Flux-LoRA", |
|
|
"trigger_word": "Shadow Projection" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Street-Bokeh-Flux-LoRA/resolve/main/images/SB2.png", |
|
|
"title": "Street Bokeh", |
|
|
"repo": "prithivMLmods/Street-Bokeh-Flux-LoRA", |
|
|
"trigger_word": "Street Bokeh" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Abstract-Cartoon-Flux-LoRA/resolve/main/images/AC2.png", |
|
|
"title": "Abstract Cartoon", |
|
|
"repo": "prithivMLmods/Abstract-Cartoon-Flux-LoRA", |
|
|
"trigger_word": "Abstract Cartoon" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Norod78/CartoonStyle-flux-lora/resolve/main/samples/1725344450635__000003800_1.jpg", |
|
|
"title": "Cartoon Style Flux", |
|
|
"repo": "Norod78/CartoonStyle-flux-lora", |
|
|
"trigger_word": "" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Digital-Chaos-Flux-LoRA/resolve/main/images/HDRDC3.webp", |
|
|
"title": "HDR Digital Chaos", |
|
|
"repo": "prithivMLmods/Digital-Chaos-Flux-LoRA", |
|
|
"trigger_word": "Digital Chaos" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Yellow-Laser-Flux-LoRA/resolve/main/images/YL1.png", |
|
|
"title": "Yellow Laser", |
|
|
"repo": "prithivMLmods/Yellow-Laser-Flux-LoRA", |
|
|
"trigger_word": "Yellow Lasers" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Bold-Shadows-Flux-LoRA/resolve/main/images/BS1.png", |
|
|
"title": "Bold Shadows", |
|
|
"repo": "prithivMLmods/Bold-Shadows-Flux-LoRA", |
|
|
"trigger_word": "Bold Shadows" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Knitted-Character-Flux-LoRA/resolve/main/images/KC1.png", |
|
|
"title": "Knitted Character", |
|
|
"repo": "prithivMLmods/Knitted-Character-Flux-LoRA", |
|
|
"trigger_word": "Knitted Character" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/frosting_lane_flux/resolve/main/images/content%20-%202024-08-11T010011.238.jpeg", |
|
|
"title": "Frosting Lane", |
|
|
"repo": "alvdansen/frosting_lane_flux", |
|
|
"trigger_word": "frstingln illustration" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Realism-FineDetailed/resolve/main/images/FD2.png", |
|
|
"title": "Fine Detailed Character", |
|
|
"repo": "prithivMLmods/Flux-Realism-FineDetailed", |
|
|
"trigger_word": "Fine Detailed" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Aura-9999/resolve/main/images/A3.png", |
|
|
"title": "Aura 9999+", |
|
|
"repo": "prithivMLmods/Aura-9999", |
|
|
"trigger_word": "Aura 9999" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Pastel-BG-Flux-LoRA/resolve/main/images/PB2.png", |
|
|
"title": "Pastel BG", |
|
|
"repo": "prithivMLmods/Pastel-BG-Flux-LoRA", |
|
|
"trigger_word": "Pastel BG" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Green-Cartoon-Flux-LoRA/resolve/main/images/GC1.png", |
|
|
"title": "Green Cartoon", |
|
|
"repo": "prithivMLmods/Green-Cartoon-Flux-LoRA", |
|
|
"trigger_word": "Green Cartoon" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Retro-Pixel-Flux-LoRA/resolve/main/images/RP1.png", |
|
|
"title": "Retro Pixel", |
|
|
"repo": "prithivMLmods/Retro-Pixel-Flux-LoRA", |
|
|
"trigger_word": "Retro Pixel" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Teen-Outfit/resolve/main/images/TO2.png", |
|
|
"title": "Teen Outfit", |
|
|
"repo": "prithivMLmods/Teen-Outfit", |
|
|
"trigger_word": "Teen Outfit" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/CAnime-LoRA/resolve/main/images/CA3.png", |
|
|
"title": "CAnime", |
|
|
"repo": "prithivMLmods/CAnime-LoRA", |
|
|
"trigger_word": "CAnime" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Super-Pencil-Flux-LoRA/resolve/main/images/SP1.png", |
|
|
"title": "Simple Pencil", |
|
|
"repo": "prithivMLmods/Super-Pencil-Flux-LoRA", |
|
|
"trigger_word": "Simple Pencil" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/martintomov/retrofuturism-flux/resolve/main/images/2e40deba-858e-454f-ae1c-d1ba2adb6a65.jpeg", |
|
|
"title": "Retro futurism", |
|
|
"repo": "martintomov/retrofuturism-flux", |
|
|
"trigger_word": "retrofuturism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Bootoshi/retroanime/resolve/main/images/9f21dffe-c4da-46c0-b0a6-e06257cf98d6.webp", |
|
|
"title": "Retro Anime", |
|
|
"repo": "Bootoshi/retroanime", |
|
|
"trigger_word": "retro anime" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/plushy-world-flux/resolve/main/images/ComfyUI_00666_%20(1).png", |
|
|
"title": "Plushy world", |
|
|
"repo": "alvdansen/plushy-world-flux", |
|
|
"trigger_word": "3dcndylnd style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/renderartist/ROYGBIVFlux/resolve/main/images/ComfyUI_temp_qpxhm_00154_.png", |
|
|
"title": "ROYGBIVFlux", |
|
|
"repo": "renderartist/ROYGBIVFlux", |
|
|
"trigger_word": "r0ygb1v, digital illustration, textured" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/alvdansen/sonny-anime-flex/resolve/main/images/GLuFasaLyEoBaAUQMREVf_20b5cf5b178a404296978e360a9ac435.png", |
|
|
"title": "sonny anime", |
|
|
"repo": "alvdansen/sonny-anime-flex", |
|
|
"trigger_word": "nm22 [style] style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/bingbangboom/flux_whimscape/resolve/main/images/2.png", |
|
|
"title": "flux whimscape", |
|
|
"repo": "bingbangboom/flux_whimscape", |
|
|
"trigger_word": "illustration in the style of WHMSCPE001" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/AP123_movie_shots_ic_lora_experiment_v1/resolve/main/samples/1730923312010__000000500_1.jpg", |
|
|
"title": "movie shots ic lora", |
|
|
"repo": "glif-loradex-trainer/AP123_movie_shots_ic_lora_experiment_v1", |
|
|
"trigger_word": "MOVIE-SHOTS" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif/LiDAR-Vision/resolve/main/images/f8f1995e-c583-425b-b73a-f3e873ce1005.png", |
|
|
"title": "LiDAR", |
|
|
"repo": "glif/LiDAR-Vision", |
|
|
"trigger_word": "L1d4r" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Canopus-Flux-LoRA-Hoodies/resolve/main/images/XXX.png", |
|
|
"title": "Hoodies", |
|
|
"repo": "prithivMLmods/Canopus-Flux-LoRA-Hoodies", |
|
|
"trigger_word": "Hoodie" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/dvyio/flux-lora-rdr2/resolve/main/images/RTqPoC9s0M1wNhago27OV_dda06f47ee764202aa5e55efa923b94e.jpg", |
|
|
"title": "World of RDR", |
|
|
"repo": "dvyio/flux-lora-rdr2", |
|
|
"trigger_word": "in the style of RDRGM" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Fihade/Retro-Collage-Art-Flux-Dev/resolve/main/images/005.jpeg", |
|
|
"title": "Retro Collage Art", |
|
|
"repo": "Fihade/Retro-Collage-Art-Flux-Dev", |
|
|
"trigger_word": "ff-collage" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Quote-LoRA/resolve/main/images/QQ2.png", |
|
|
"title": "Quote", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Quote-LoRA", |
|
|
"trigger_word": "quoter" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Stamp-Art-LoRA/resolve/main/images/SS2.png", |
|
|
"title": "Stamp", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Stamp-Art-LoRA", |
|
|
"trigger_word": "stam9" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Hand-Sticky-LoRA/resolve/main/images/H3.png", |
|
|
"title": "Hand Sticky", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Hand-Sticky-LoRA", |
|
|
"trigger_word": "handstick69" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Poster-HQ-LoRA/resolve/main/images/PP2.png", |
|
|
"title": "Poster Foss", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Poster-HQ-LoRA", |
|
|
"trigger_word": "poster foss" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Ctoon-LoRA/resolve/main/images/C3.png", |
|
|
"title": "Ctoon", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Ctoon-LoRA", |
|
|
"trigger_word": "ctoon" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-C33-Design-LoRA/resolve/main/images/3.png", |
|
|
"title": "C33 Design", |
|
|
"repo": "prithivMLmods/Flux-C33-Design-LoRA", |
|
|
"trigger_word": "C33 Design" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/2c9101_25IMG-20251101-090241-720.jpg", |
|
|
"title": "Indo Realism", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Indo-Realism-LoRA", |
|
|
"trigger_word": "indo-realism" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Sketch-Card-LoRA/resolve/main/images/SC2.png", |
|
|
"title": "Sketch Card", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Sketch-Card-LoRA", |
|
|
"trigger_word": "sketch card" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Movie-Boards-LoRA/resolve/main/images/MB1.png", |
|
|
"title": "Movie Board", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Movie-Boards-LoRA", |
|
|
"trigger_word": "movieboard" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Pov-DoorEye-LoRA/resolve/main/images/L4.png", |
|
|
"title": "Door Eye View", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Pov-DoorEye-LoRA", |
|
|
"trigger_word": "look in 2" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/e76801_25Negar-1761975579844.jpg", |
|
|
"title": "Enna Sketch", |
|
|
"repo": "alvdansen/enna-sketch-style", |
|
|
"trigger_word": "sketch illustration style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/jbilcke-hf/flux-dev-panorama-lora-2/resolve/main/samples/HDRI%20panoramic%20view%20of%20TOK%2C%20visiting%20an%20amusement%20park%20about%20harry%20potter.webp", |
|
|
"title": "Panorama", |
|
|
"repo": "jbilcke-hf/flux-dev-panorama-lora-2", |
|
|
"trigger_word": "HDRI panoramic view of TOK" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-LoRA-Micro-landscape-on-Mobile-Phone/resolve/main/images/a29b8763a8f733dea09c1ab07a42263ef6e304cb81be3f5c97fbf8f6.jpg", |
|
|
"title": "Micro Landscape", |
|
|
"repo": "Shakker-Labs/FLUX.1-dev-LoRA-Micro-landscape-on-Mobile-Phone", |
|
|
"trigger_word": "miniature stereoscopic scene" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/goldenark__Ancient_Greece_Watercolor_Sketch_Style/resolve/main/samples/1727152322975__000002000_0.jpg", |
|
|
"title": "Ancient Greece Watercolor", |
|
|
"repo": "glif-loradex-trainer/goldenark__Ancient_Greece_Watercolor_Sketch_Style", |
|
|
"trigger_word": "AncientWaterColorStyle" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/i12bp8_appelsiensam_mii_v1/resolve/main/samples/1731918886531__000003000_0.jpg", |
|
|
"title": "M11 PPLSNSM", |
|
|
"repo": "glif-loradex-trainer/i12bp8_appelsiensam_mii_v1", |
|
|
"trigger_word": "M11_PPLSNSM" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/an303042_RisographPrint_v1/resolve/main/samples/1731852835625__000003000_5.jpg", |
|
|
"title": "RisographPrint", |
|
|
"repo": "glif-loradex-trainer/an303042_RisographPrint_v1", |
|
|
"trigger_word": "rsgrf , risograph" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/gokaygokay/Flux-White-Background-LoRA/resolve/main/images/example_mtojzmerf.png", |
|
|
"title": "White Background", |
|
|
"repo": "gokaygokay/Flux-White-Background-LoRA", |
|
|
"trigger_word": "in the middle ,white background" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif/Gesture-Draw/resolve/main/images/cf8697fb-d6b4-4684-8a1d-82beb9d266ed.jpg", |
|
|
"title": "Gesture Draw", |
|
|
"repo": "glif/Gesture-Draw", |
|
|
"trigger_word": "gstdrw style" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Black-of-Art-Flux/resolve/main/images/2222.png", |
|
|
"title": "Black of Art", |
|
|
"repo": "strangerzonehf/Black-of-Art-Flux", |
|
|
"trigger_word": "Black of Art" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/dvyio/flux-lora-the-sims/resolve/main/images/dunBAVBsALOepaE_dsWFI_6b0fef6b0fc4472aa07d00edea7c75b3.jpg", |
|
|
"title": "SIMS", |
|
|
"repo": "dvyio/flux-lora-the-sims", |
|
|
"trigger_word": "video game screenshot in the style of THSMS" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/UmeAiRT/FLUX.1-dev-LoRA-Ume_Sky/resolve/main/images/flux_00171_.png", |
|
|
"title": "Umesky", |
|
|
"repo": "UmeAiRT/FLUX.1-dev-LoRA-Ume_Sky", |
|
|
"trigger_word": "umesky" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/63c001_25IMG-20251101-084936-973.jpg", |
|
|
"title": "Realtime Toon Mix", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Realtime-Toon-Mix", |
|
|
"trigger_word": "toon mix" |
|
|
}, |
|
|
{ |
|
|
"image": "https://uploadkon.ir/uploads/7f9b01_25images-7-.jpeg", |
|
|
"title": "Pointcrayonstyle", |
|
|
"repo": "oshtz/flux-pointcrayonstyle", |
|
|
"trigger_word": "pointcrayonstyle" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/Purz/vhs-box/resolve/main/33727059.jpeg", |
|
|
"title": "VSH Box", |
|
|
"repo": "Purz/vhs-box", |
|
|
"trigger_word": "vhs_box" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/nerijs/flux_prettyshot_v1/resolve/main/images/image_5.png", |
|
|
"title": "Prettyshot", |
|
|
"repo": "nerijs/flux_prettyshot_v1", |
|
|
"trigger_word": "pr3ttysh0t" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/insectagon_pipo_hippo1/resolve/main/samples/1729839793051__000001500_1.jpg", |
|
|
"title": "Insectagon pipo", |
|
|
"repo": "glif-loradex-trainer/insectagon_pipo_hippo1", |
|
|
"trigger_word": "pipo_meme" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Polaroid-Plus/resolve/main/images/P1.png", |
|
|
"title": "Polaroid Plus", |
|
|
"repo": "prithivMLmods/Flux-Polaroid-Plus", |
|
|
"trigger_word": "Polaroid Collage" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Product-Ad-Backdrop/resolve/main/images/PA1.png", |
|
|
"title": "Product Ad", |
|
|
"repo": "prithivMLmods/Flux-Product-Ad-Backdrop", |
|
|
"trigger_word": "Product Ad" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Art-Nightmare-99/resolve/main/images/NM4.png", |
|
|
"title": "Nightmare 99", |
|
|
"repo": "prithivMLmods/Flux-Art-Nightmare-99", |
|
|
"trigger_word": "nm99" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux.1-Dev-Frosted-Container-LoRA/resolve/main/images/FG1.png", |
|
|
"title": "Frosted Container", |
|
|
"repo": "prithivMLmods/Flux.1-Dev-Frosted-Container-LoRA", |
|
|
"trigger_word": "frosted GC" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/swap_magenta_kuki_roblox/resolve/main/samples/1731068408259__000001500_4.jpg", |
|
|
"title": "Magenta Kuki Roblox", |
|
|
"repo": "glif-loradex-trainer/swap_magenta_kuki_roblox", |
|
|
"trigger_word": "kuki_magenta, roblox" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/glif-loradex-trainer/maxxd4240_PleinAir/resolve/main/samples/1730493095161__000003000_4.jpg", |
|
|
"title": "Plein Air", |
|
|
"repo": "glif-loradex-trainer/maxxd4240_PleinAir", |
|
|
"trigger_word": "P1e!n" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-GArt-LoRA/resolve/main/images/G2.png", |
|
|
"title": "GArt", |
|
|
"repo": "prithivMLmods/Flux-GArt-LoRA", |
|
|
"trigger_word": "GArt" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Flux-Super-Capybara-HF/resolve/main/images/C2.png", |
|
|
"title": "Capybara HF", |
|
|
"repo": "strangerzonehf/Flux-Super-Capybara-HF", |
|
|
"trigger_word": "capybara hf" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Fine-Detail-LoRA/resolve/main/images/SR1.png", |
|
|
"title": "Fine Detail", |
|
|
"repo": "prithivMLmods/Flux-Fine-Detail-LoRA", |
|
|
"trigger_word": "Super Detail" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/gokaygokay/Flux-Digital-Backgrounds-LoRA/resolve/main/images/image1.jpg", |
|
|
"title": "Digital Backgrounds", |
|
|
"repo": "gokaygokay/Flux-Digital-Backgrounds-LoRA", |
|
|
"trigger_word": "dgtlbg" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/gokaygokay/Flux-Realistic-Backgrounds-LoRA/resolve/main/images/image1.jpg", |
|
|
"title": "Realistic Backgrounds", |
|
|
"repo": "gokaygokay/Flux-Realistic-Backgrounds-LoRA", |
|
|
"trigger_word": "rlstcbg" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/prithivMLmods/Flux-Lego-Ref-LoRA/resolve/main/images/2.png", |
|
|
"title": "LEGO", |
|
|
"repo": "prithivMLmods/Flux-Lego-Ref-LoRA", |
|
|
"trigger_word": "lego --fref --89890" |
|
|
}, |
|
|
{ |
|
|
"image": "https://huggingface.co/strangerzonehf/Qd-Sketch/resolve/main/images/3.png", |
|
|
"title": "Qd-Sketch", |
|
|
"repo": "strangerzonehf/Qd-Sketch", |
|
|
"trigger_word": "Qd-Sketch" |
|
|
} |
|
|
]; |
|
|
|
|
|
const loraPersianNames = { |
|
|
"Dalle Mix": "ترکیب دالی", |
|
|
"Koda": "کُدا", |
|
|
"Super Realism": "واقعگرایی خارقالعاده", |
|
|
"Ghibli Flux": "سبک جیبلی", |
|
|
"Sketch_Smudge": "طراحی و لکه", |
|
|
"Animeo Mix": "ترکیب انیمه", |
|
|
"Animex Mix": "ترکیب انیمکس", |
|
|
"Super Portraits": "پرترههای ویژه", |
|
|
"Super Blend": "ترکیب ویژه", |
|
|
"Midjourney Mix 2": "ترکیب میدجرنی ۲", |
|
|
"SHOU_XIN": "شو شین", |
|
|
"Long Toons": "کارتونهای بلند", |
|
|
"Cute 3D Kawaii": "کاوایی سهبعدی", |
|
|
"Isometric 3D": "ایزومتریک سهبعدی", |
|
|
"Toon 2.5D": "کارتون ۲.۵ بعدی", |
|
|
"YWL Realism": "واقعگرایی YWL", |
|
|
"Chill Guy": "پسر آرام", |
|
|
"Anime PVC Style": "سبک انیمه PVC", |
|
|
"Smiley C4C": "لبخند C4C", |
|
|
"Purple Dream": "رویای بنفش", |
|
|
"Flux Face Realism": "چهره واقعگرایانه", |
|
|
"Softserve Anime": "انیمه سافتسرو", |
|
|
"Modeling Hut": "کلبه مدلینگ", |
|
|
"Creative Template": "قالب خلاقانه", |
|
|
"Ultra Realism": "فرا واقعگرایی", |
|
|
"Game Assets": "آیتمهای بازی", |
|
|
"Softpasty": "سافتپِیستی", |
|
|
"Details Add": "افزودن جزئیات", |
|
|
"Flux Anime": "فلاکس انیمه", |
|
|
"Ghibsky Illustration": "تصویرسازی گیبسکی", |
|
|
"Dark Fantasy": "فانتزی تاریک", |
|
|
"Paper Cutout": "هنر کاغذبری", |
|
|
"Mooniverse": "دنیای ماه", |
|
|
"Pola Photo": "عکس پولاروید", |
|
|
"Flux Tarot": "فال تاروت", |
|
|
"Real Anime": "انیمه واقعی", |
|
|
"Stickers": "استیکرها", |
|
|
"Realism": "واقعگرایی", |
|
|
"Cine Aesthetic": "زیباییشناسی سینمایی", |
|
|
"Cute 3D": "سهبعدی بامزه", |
|
|
"Dreamscape": "چشمانداز رویایی", |
|
|
"Cute Kawaii": "کاوایی بامزه", |
|
|
"Pastel Anime": "انیمه پاستلی", |
|
|
"Vector": "وکتور", |
|
|
"Miniature": "مینیاتوری", |
|
|
"Surf Bingbangboom": "موجسواری", |
|
|
"Snoopy Charlie": "اسنوپی و چارلی", |
|
|
"Fixed Sonny": "سانی (اصلاح شده)", |
|
|
"Multi Angle": "چند زاویهای", |
|
|
"How2Draw": "آموزش نقاشی", |
|
|
"Text Poster": "پوستر متنی", |
|
|
"Aquarell Watercolor": "آبرنگ آکوارل", |
|
|
"Face Projection ": "تابش روی چهره", |
|
|
"Ecom Design Art": "هنر طراحی محصول", |
|
|
"Max Head-Room": "مکس هدروم", |
|
|
"Toy Box Flux": "جعبه اسباببازی", |
|
|
"Live 3D": "سهبعدی زنده", |
|
|
"Garbage Bag Art": "هنر کیسه زباله", |
|
|
"Logo Design": "طراحی لوگو", |
|
|
"Sadie Sink": "سیدی سینک", |
|
|
"Jenna ortega": "جنا اورتگا", |
|
|
"Poker Cards": "کارتهای پوکر", |
|
|
"Cubist Cartoon": "کارتون کوبیسم", |
|
|
"Miniature People": "مردم مینیاتوری", |
|
|
"kids Illustrations": "تصویرسازی کودکانه", |
|
|
"TSTVCTR Cartoon": "کارتون TSTVCTR", |
|
|
"Tosti Vector": "وکتور تستی", |
|
|
"Propaganda Poster": "پوستر تبلیغاتی", |
|
|
"Ringside Portrait": "پرتره کنار رینگ", |
|
|
"Long Exposure": "نوردهی طولانی", |
|
|
"Street Wear": "لباس خیابانی", |
|
|
"NFT V4": "هنر NFT نسخه ۴", |
|
|
"Product Design": "طراحی محصول", |
|
|
"Typography": "تایپوگرافی", |
|
|
"Mosoco": "موسوکو", |
|
|
"Latent Pop": "پاپ پنهان", |
|
|
"Dstyl3xl": "سبک Dstyle", |
|
|
"Retouch FLux": "ریتاچ و ویرایش", |
|
|
"Block Print": "چاپ دستی", |
|
|
"Weird Things Flux": "چیزهای عجیب", |
|
|
"Replicate Flux LoRA": "سبک رپلیکیت", |
|
|
"Linework": "خطوط هنری", |
|
|
"Cassette Futurism": "آیندهنگری کاستی", |
|
|
"Mojo Style": "سبک موجو", |
|
|
"Jojoso Style": "سبک جوجوسو", |
|
|
"Huggieverse": "دنیای هاگی", |
|
|
"Wallpaper LoRA": "والپیپر", |
|
|
"Geo Pop": "پاپ هندسی", |
|
|
"Colorscape": "منظره رنگی", |
|
|
"Thermal Image": "تصویر حرارتی", |
|
|
"Clothing Flux": "طراحی لباس", |
|
|
"Stippled Illustration": "تصویرسازی نقطهای", |
|
|
"Fruitlabels": "برچسب میوه", |
|
|
"Margot Robbie": "مارگو رابی", |
|
|
"Formula 1 Lego": "فرمول یک لگویی", |
|
|
"Melt Acid": "هنر اسیدی", |
|
|
"Enso": "دایره اِنسو", |
|
|
"Opus Ascii": "هنر اسکی", |
|
|
"Cybrpnkz": "سایبرپانک", |
|
|
"Pattern Generation": "ساخت پترن", |
|
|
"Caricature": "کاریکاتور", |
|
|
"3DXLC1": "مدل سهبعدی", |
|
|
"Neon": "نئون", |
|
|
"Vintage Sardine Tins": "قوطی ساردین قدیمی", |
|
|
"Float Ballon Character": "شخصیت بادکنکی", |
|
|
"Golden Haggadah": "سبک هاگادای طلایی", |
|
|
"Ftw Balaclava": "کلاه بالاکلاوا", |
|
|
"Undraw": "سبک آندرا", |
|
|
"Anime Test": "تست انیمه", |
|
|
"Black Myth Wukong": "افسانه سیاه: ووکونگ", |
|
|
"Pastelcomic": "کمیک پاستلی", |
|
|
"Moonman": "مرد ماه", |
|
|
"Ascii Flux": "هنر اسکی", |
|
|
"Stars Galaxy": "کهکشان و ستارگان", |
|
|
"Pencil V2": "طراحی با مداد", |
|
|
"Children Simple Sketch": "نقاشی ساده کودکانه", |
|
|
"Contemporarink": "جوهر معاصر", |
|
|
"OverlordStyle": "سبک اورلرد", |
|
|
"Canny quest": "ماجرای هوشمند", |
|
|
"Building Flux": "معماری", |
|
|
"Tinker Bell Flux": "تینکربل", |
|
|
"Playful Metropolis": "کلانشهر بازیگوش", |
|
|
"Character Polygon": "شخصیت چندضلعی", |
|
|
"GTA 6 Theme": "تم GTA 6", |
|
|
"GTA Character Concept": "کانسپت شخصیت GTA", |
|
|
"3D Sketchfab": "اسکچفب سهبعدی", |
|
|
"In Image Collage": "کلاژ در تصویر", |
|
|
"Anime Journey": "سفر انیمهای", |
|
|
"Min Pastel": "پاستل مینیمال", |
|
|
"RDR2": "رد دد ردمپشن ۲", |
|
|
"Paper Model": "مدل کاغذی", |
|
|
"Retrocomic Flux": "کمیک رترو", |
|
|
"Halloween Flux": "هالووین", |
|
|
"Castor-3D-Portrait": "پرتره سهبعدی", |
|
|
"Coloring book flux": "کتاب رنگآمیزی", |
|
|
"Uncoloured Polygon": "چندضلعی بیرنگ", |
|
|
"Past Present Mix": "ترکیب گذشته و حال", |
|
|
"Double Exposure": "نوردهی دوگانه", |
|
|
"Seamless Texture": "بافت بدون درز", |
|
|
"Mockup Texture": "موکاپ و بافت", |
|
|
"Tarot Cards": "کارتهای تاروت", |
|
|
"Amxtoon": "امکستون", |
|
|
"Epic Realism": "واقعگرایی حماسی", |
|
|
"Mixed Reality": "واقعیت ترکیبی", |
|
|
"Pixelart": "هنر پیکسلی", |
|
|
"Modern Pixel art": "هنر پیکسلی مدرن", |
|
|
"Sticker": "استیکر", |
|
|
"Space Wallpaper": "والپیپر فضایی", |
|
|
"Pixar 3D": "انیمیشن پیکسار", |
|
|
"EBook Cover": "جلد کتاب الکترونیکی", |
|
|
"Minimal Futuristic": "آیندهنگر مینیمال", |
|
|
"Seamless Pattern": "پترن بدون درز", |
|
|
"Coloring Book": "کتاب رنگآمیزی", |
|
|
"Intense Red": "قرمز غلیظ", |
|
|
"Glowing Body Flux": "بدن درخشان", |
|
|
"Electric Blue": "آبی الکتریکی", |
|
|
"Clouds Illusion": "توهم ابرها", |
|
|
"Digital Yellow": "زرد دیجیتال", |
|
|
"Flux Qwen Capybara": "کاپیبارا", |
|
|
"Plein Air Art ": "هنر در فضای باز", |
|
|
"Orange Chroma": "کروم نارنجی", |
|
|
"Lime Green": "سبز لیمویی", |
|
|
"Line Flare": "درخشش خطی", |
|
|
"Golden Dust": "گرد و غبار طلایی", |
|
|
"Dramatic Neon": "نئون دراماتیک", |
|
|
"Outfit Generator": "طراح لباس", |
|
|
"Half Illustration": "نصف تصویرسازی", |
|
|
"Oilscape": "منظره رنگ روغن", |
|
|
"Red Undersea Flux": "زیر دریای قرمز", |
|
|
"3D Render Flux LoRA": "رندر سهبعدی", |
|
|
"Yellow Pop Flux": "پاپ زرد", |
|
|
"Purple Grid Flux": "شبکه بنفش", |
|
|
"Dark Thing Flux": "موجود تاریک", |
|
|
"Shadow Projection": "تابش سایه", |
|
|
"Street Bokeh": "بوکه خیابانی", |
|
|
"Abstract Cartoon": "کارتون انتزاعی", |
|
|
"Cartoon Style Flux": "سبک کارتونی", |
|
|
"HDR Digital Chaos": "آشوب دیجیتال HDR", |
|
|
"Yellow Laser": "لیزر زرد", |
|
|
"Bold Shadows": "سایههای پررنگ", |
|
|
"Knitted Character": "شخصیت بافتنی", |
|
|
"Frosting Lane": "کوچه فراستینگ", |
|
|
"Fine Detailed Character": "شخصیت با جزئیات", |
|
|
"Aura 9999+": "هاله ۹۹۹۹", |
|
|
"Pastel BG": "پسزمینه پاستلی", |
|
|
"Green Cartoon": "کارتون سبز", |
|
|
"Retro Pixel": "پیکسل رترو", |
|
|
"Teen Outfit": "لباس نوجوان", |
|
|
"CAnime": "سیانیمه", |
|
|
"Simple Pencil": "مداد ساده", |
|
|
"Retro futurism": "آیندهنگری رترو", |
|
|
"Retro Anime": "انیمه رترو", |
|
|
"Plushy world": "دنیای پولیشی", |
|
|
"ROYGBIVFlux": "رنگینکمان", |
|
|
"sonny anime": "انیمه سانی", |
|
|
"flux whimscape": "منظره خیالی", |
|
|
"movie shots ic lora": "شات سینمایی", |
|
|
"LiDAR": "لیدار", |
|
|
"Hoodies": "هودی", |
|
|
"World of RDR": "دنیای رد دد", |
|
|
"Retro Collage Art": "هنر کلاژ رترو", |
|
|
"Quote": "نقل قول", |
|
|
"Stamp": "مهر و تمبر", |
|
|
"Hand Sticky": "یادداشت چسبان", |
|
|
"Poster Foss": "پوستر فاس", |
|
|
"Ctoon": "سیتون", |
|
|
"C33 Design": "طراحی C33", |
|
|
"Indo Realism": "واقعگرایی هندی", |
|
|
"Sketch Card": "کارت طراحی", |
|
|
"Movie Board": "تخته فیلم", |
|
|
"Door Eye View": "دید از چشمی در", |
|
|
"Enna Sketch": "طراحی انا", |
|
|
"Panorama": "پانوراما", |
|
|
"Micro Landscape": "منظره میکرو", |
|
|
"Ancient Greece Watercolor": "آبرنگ یونان باستان", |
|
|
"M11 PPLSNSM": "سبک M11", |
|
|
"RisographPrint": "چاپ ریسوگراف", |
|
|
"White Background": "پسزمینه سفید", |
|
|
"Gesture Draw": "طراحی حرکتی", |
|
|
"Black of Art": "هنر سیاه", |
|
|
"SIMS": "سیمز", |
|
|
"Umesky": "آسمان یومی", |
|
|
"Realtime Toon Mix": "ترکیب کارتونی", |
|
|
"Pointcrayonstyle": "سبک پاستل روغنی", |
|
|
"VSH Box": "جعبه نوار VHS", |
|
|
"Prettyshot": "شات زیبا", |
|
|
"Insectagon pipo": "پیپو حشرهای", |
|
|
"Polaroid Plus": "پولاروید پلاس", |
|
|
"Product Ad": "تبلیغ محصول", |
|
|
"Nightmare 99": "کابوس ۹۹", |
|
|
"Frosted Container": "ظرف مات", |
|
|
"Magenta Kuki Roblox": "روبلاکس کوکی", |
|
|
"Plein Air": "نقاشی در طبیعت", |
|
|
"GArt": "جیآرت", |
|
|
"Capybara HF": "کاپیبارا HF", |
|
|
"Fine Detail": "جزئیات دقیق", |
|
|
"Digital Backgrounds": "پسزمینه دیجیتال", |
|
|
"Realistic Backgrounds": "پسزمینه واقعی", |
|
|
"LEGO": "لگو", |
|
|
"Qd-Sketch": "طراحی سریع" |
|
|
}; |
|
|
|
|
|
const GPU_QUOTA_ERROR_HTML = ` |
|
|
<div class="ip-reset-guide-container"> |
|
|
<div class="guide-header"> |
|
|
<svg class="guide-header-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="12" cy="12" r="10" stroke="#667eea" stroke-width="2" fill="rgba(102, 126, 234, 0.1)"/><path d="M8 12.5l2.5 2.5L16 9" stroke="#667eea" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg> |
|
|
<div><h2>یک قدم تا ساخت تصاویر جدید</h2><p>نیازمند تغییر نقطه دستیابی</p></div> |
|
|
</div> |
|
|
<div class="guide-content"> |
|
|
<div class="info-card"> |
|
|
<div class="info-card-header"><svg class="info-card-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z" stroke="#667eea" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="info-card-title">راه حل سریع</span></div> |
|
|
<p>طبق ویدیو آموزشی پایین بین نقطه دستیابی جابجا شوید تلاش مجدد بزنید تا تصاویر مجدداً تولید بشه.</p> |
|
|
</div> |
|
|
<div class="summary-section"> |
|
|
<div class="summary-header"><svg class="summary-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 12l2 2 4-4" stroke="#2f5a33" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><circle cx="12" cy="12" r="10" stroke="#2f5a33" stroke-width="2"></circle></svg><span class="summary-title">خلاصه راهنما</span></div> |
|
|
<div class="summary-text">هربار که این صفحه را مشاهده کردید: از اینترنت سیمکارت استفاده کنید، VPN را خاموش کرده و طبق ویدیو آموزشی پایین نقطه دستیابی رو تغییر دهید. «تلاش مجدد» کلیک کنید. با این روش ساده میتوانید به صورت نامحدود تصویر بسازید! ☘️</div> |
|
|
</div> |
|
|
</div> |
|
|
<div class="video-button-container"> |
|
|
<button id="tutorialLinkBtn" class="elegant-video-button"> |
|
|
<svg class="elegant-video-button-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"></path></svg> |
|
|
دیدن ویدیو آموزشی استفاده نامحدود |
|
|
</button> |
|
|
</div> |
|
|
<div class="guide-actions"> |
|
|
<button class="action-button back-button"><svg class="action-button-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19 12H5M12 19l-7-7 7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>بازگشت</button> |
|
|
<button class="action-button retry-button"><svg class="action-button-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M23 4v6h-6M1 20v-6h6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> تلاش مجدد</button> |
|
|
</div> |
|
|
</div> |
|
|
`; |
|
|
|
|
|
const promptInput = document.getElementById('prompt-input'); |
|
|
const submitBtn = document.getElementById('submit-btn'); |
|
|
const resultContainer = document.getElementById('result-container'); |
|
|
const styleModal = document.getElementById('style-modal'); |
|
|
const closeModalBtn = document.getElementById('close-modal-btn'); |
|
|
const loraGrid = document.getElementById('lora-grid'); |
|
|
const ratioSelector = document.getElementById('aspect-ratio-selector'); |
|
|
const stylePreviewContainer = document.getElementById('style-preview-container'); |
|
|
const selectedStyleImageLarge = document.getElementById('selected-style-image-large'); |
|
|
const selectedStyleNameFa = document.getElementById('selected-style-name-fa'); |
|
|
|
|
|
const modalTitle = document.querySelector('#style-modal .modal-header h2'); |
|
|
const originalModalTitleHTML = modalTitle.innerHTML; |
|
|
let longPressTimer = null; |
|
|
let longPressJustHappened = false; |
|
|
|
|
|
const customSizeModal = document.getElementById('custom-size-modal'); |
|
|
const closeCustomModalBtn = document.getElementById('close-custom-modal-btn'); |
|
|
const confirmCustomSizeBtn = document.getElementById('confirm-custom-size-btn'); |
|
|
const customWidthInput = document.getElementById('custom-width-input'); |
|
|
const customHeightInput = document.getElementById('custom-height-input'); |
|
|
const customRatioLabel = document.getElementById('custom-ratio-label-value'); |
|
|
|
|
|
let selectedLora = null; |
|
|
let selectedRatio = '1:1'; |
|
|
let customWidth = 1024; |
|
|
let customHeight = 1024; |
|
|
let imageObserver = null; |
|
|
let fluxClient = null; |
|
|
let countdownInterval = null; |
|
|
|
|
|
const loadingPlaceholderHTML = ` |
|
|
<div id="loading-placeholder"> |
|
|
<div class="generator-container"> |
|
|
<div class="text-overlay" id="loading-status-text">در حال آمادهسازی...</div> |
|
|
<div class="progress-bar" id="loading-progress-bar"></div> |
|
|
</div> |
|
|
</div>`; |
|
|
|
|
|
const startCountdown = (durationInSeconds) => { |
|
|
stopCountdown(); |
|
|
let remainingTime = durationInSeconds; |
|
|
|
|
|
countdownInterval = setInterval(() => { |
|
|
const statusEl = document.getElementById('loading-status-text'); |
|
|
const progressEl = document.getElementById('loading-progress-bar'); |
|
|
|
|
|
if (remainingTime >= 0) { |
|
|
const progress = ((durationInSeconds - remainingTime) / durationInSeconds) * 100; |
|
|
if (statusEl) statusEl.textContent = `در حال ساخت... زمان باقیمانده: ${remainingTime} ثانیه`; |
|
|
if (progressEl) progressEl.style.width = `${progress}%`; |
|
|
remainingTime--; |
|
|
} else { |
|
|
if (statusEl) statusEl.textContent = 'در حال نهاییسازی... لطفاً کمی صبر کنید.'; |
|
|
if (progressEl) progressEl.style.width = `100%`; |
|
|
stopCountdown(); |
|
|
} |
|
|
}, 1000); |
|
|
}; |
|
|
|
|
|
const stopCountdown = () => { |
|
|
if (countdownInterval) { |
|
|
clearInterval(countdownInterval); |
|
|
countdownInterval = null; |
|
|
} |
|
|
}; |
|
|
|
|
|
const setLoadingState = (isLoading, message = 'در حال پردازش...') => { |
|
|
const btnSpinner = submitBtn.querySelector('.spinner'); |
|
|
const btnText = document.getElementById('btn-text'); |
|
|
const btnIcon = submitBtn.querySelector('svg'); |
|
|
|
|
|
if (isLoading) { |
|
|
clearResult(); |
|
|
resultContainer.classList.add('loading'); |
|
|
resultContainer.innerHTML = loadingPlaceholderHTML; |
|
|
btnSpinner.style.display = 'inline-block'; |
|
|
btnIcon.style.display = 'none'; |
|
|
btnText.textContent = message; |
|
|
submitBtn.disabled = true; |
|
|
} else { |
|
|
stopCountdown(); |
|
|
resultContainer.classList.remove('loading'); |
|
|
btnSpinner.style.display = 'none'; |
|
|
btnIcon.style.display = 'inline-block'; |
|
|
btnText.textContent = 'خلق کن!'; |
|
|
submitBtn.disabled = false; |
|
|
} |
|
|
}; |
|
|
|
|
|
|
|
|
const displayResult = (imageUrl) => { |
|
|
resultContainer.classList.remove('loading', 'has-error-guide'); |
|
|
resultContainer.classList.add('has-content'); |
|
|
|
|
|
|
|
|
const wrapper = document.createElement('div'); |
|
|
wrapper.id = 'result-image-wrapper'; |
|
|
wrapper.style.animation = 'fadeIn 0.5s'; |
|
|
wrapper.style.textAlign = 'center'; |
|
|
|
|
|
const img = document.createElement('img'); |
|
|
img.id = 'result-image-display'; |
|
|
img.src = imageUrl; |
|
|
img.alt = 'تصویر خلق شده'; |
|
|
img.style.maxWidth = '100%'; |
|
|
img.style.maxHeight = '500px'; |
|
|
img.style.objectFit = 'contain'; |
|
|
img.style.borderRadius = 'var(--radius-input)'; |
|
|
img.style.boxShadow = 'var(--shadow-md)'; |
|
|
img.style.border = '1px solid var(--panel-border)'; |
|
|
wrapper.appendChild(img); |
|
|
|
|
|
const downloadBtn = document.createElement('button'); |
|
|
downloadBtn.id = 'download-btn'; |
|
|
downloadBtn.className = 'download-button'; |
|
|
downloadBtn.innerHTML = ` |
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> |
|
|
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/> |
|
|
<polyline points="7 10 12 15 17 10"/> |
|
|
<line x1="12" y1="15" x2="12" y2="3"/> |
|
|
</svg> |
|
|
<span>دانلود تصویر</span> |
|
|
`; |
|
|
|
|
|
|
|
|
resultContainer.innerHTML = ''; |
|
|
resultContainer.appendChild(wrapper); |
|
|
resultContainer.appendChild(downloadBtn); |
|
|
|
|
|
|
|
|
downloadBtn.addEventListener('click', async (event) => { |
|
|
const button = event.currentTarget; |
|
|
const buttonText = button.querySelector('span'); |
|
|
const originalText = buttonText.textContent; |
|
|
|
|
|
button.disabled = true; |
|
|
buttonText.textContent = 'در حال آمادهسازی...'; |
|
|
|
|
|
try { |
|
|
const response = await fetch(img.src); |
|
|
const blob = await response.blob(); |
|
|
const filename = `generated-image-${Date.now()}.png`; |
|
|
|
|
|
window.parent.postMessage({ |
|
|
type: 'DOWNLOAD_IMAGE', |
|
|
payload: { blob, filename } |
|
|
}, '*'); |
|
|
|
|
|
} catch (error) { |
|
|
console.error('Error preparing file for download:', error); |
|
|
alert('خطا در آمادهسازی فایل برای دانلود. لطفاً دوباره تلاش کنید.'); |
|
|
} finally { |
|
|
button.disabled = false; |
|
|
buttonText.textContent = originalText; |
|
|
} |
|
|
}); |
|
|
}; |
|
|
|
|
|
|
|
|
const clearResult = () => { |
|
|
resultContainer.classList.remove('has-content', 'loading', 'has-error-guide'); |
|
|
resultContainer.innerHTML = `<p>${'برای شروع، ایده، سبک و اندازه دلخواه خود را انتخاب کرده و دکمه "خلق کن" را بزنید.'}</p>`; |
|
|
}; |
|
|
|
|
|
const displayError = (friendlyMessage, rawError) => { |
|
|
const rawErrorString = String(rawError?.message || rawError).toLowerCase(); |
|
|
const gpuErrorKeywords = ["gpu capacity", "unavailable", "exceeded", "quota", "queue is full"]; |
|
|
const isGpuError = gpuErrorKeywords.some(keyword => rawErrorString.includes(keyword)); |
|
|
|
|
|
if (isGpuError) { |
|
|
resultContainer.classList.remove('loading'); |
|
|
resultContainer.classList.add('has-error-guide'); |
|
|
resultContainer.innerHTML = GPU_QUOTA_ERROR_HTML; |
|
|
|
|
|
resultContainer.querySelector('.back-button').addEventListener('click', clearResult); |
|
|
resultContainer.querySelector('.retry-button').addEventListener('click', generateImage); |
|
|
resultContainer.querySelector('#tutorialLinkBtn').addEventListener('click', () => { |
|
|
const tutorialUrl = '#/nav/online/news/getSingle/1149635/eyJpdiI6IjhHVGhPQWJwb3E0cjRXbnFWTW5BaUE9PSIsInZhbHVlIjoiS1V0dTdvT21wbXAwSXZaK1RCTG1pVXZqdlFJa1hXV1RKa2FLem9zU3pXMjd5MmlVOGc2YWY0NVdNR3h3Smp1aSIsIm1hYyI6IjY1NTA5ZDYzMjAzMTJhMGQyMWQ4NjA4ZDgyNGZjZDVlY2MyNjdiMjA2NWYzOWRjY2M4ZmVjYWRlMWNlMWQ3ODEiLCJ0YWciOiIifQ==/21135210'; |
|
|
window.parent.postMessage({ type: 'NAVIGATE_TO_URL', url: tutorialUrl }, '*'); |
|
|
}); |
|
|
} else { |
|
|
resultContainer.classList.add('has-content'); |
|
|
resultContainer.innerHTML = `<div class="error-message">${friendlyMessage}</div>`; |
|
|
} |
|
|
console.error("خطای کامل:", rawError); |
|
|
}; |
|
|
|
|
|
function updateStyleDisplay(lora) { |
|
|
selectedStyleNameFa.textContent = loraPersianNames[lora.title] || lora.title; |
|
|
selectedStyleImageLarge.src = `https://wsrv.nl/?url=${encodeURIComponent(lora.image)}&w=200&h=200&fit=cover&q=80&output=webp`; |
|
|
|
|
|
const descriptionP = stylePreviewContainer.querySelector('p'); |
|
|
const tickHTML = ` |
|
|
<span class="tick-wrapper"> |
|
|
<svg class="tick-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> |
|
|
<path class="tick-path" d="M5 13l4 4L19 7" /> |
|
|
</svg> |
|
|
</span>`; |
|
|
|
|
|
descriptionP.innerHTML = `سبک ${loraPersianNames[lora.title] || lora.title} انتخاب شد. ${tickHTML}`; |
|
|
|
|
|
setTimeout(() => { |
|
|
const tickWrapper = descriptionP.querySelector('.tick-wrapper'); |
|
|
if (tickWrapper) { |
|
|
tickWrapper.classList.add('show'); |
|
|
} |
|
|
}, 50); |
|
|
} |
|
|
|
|
|
function populateGrid() { |
|
|
loraGrid.innerHTML = ''; |
|
|
loras.forEach(lora => { |
|
|
const card = document.createElement('div'); |
|
|
card.className = 'lora-card'; |
|
|
card.dataset.loraTitle = lora.title; |
|
|
|
|
|
const thumbnailUrl = `https://wsrv.nl/?url=${encodeURIComponent(lora.image)}&w=300&h=300&fit=cover&q=75&output=webp`; |
|
|
|
|
|
card.innerHTML = `<img data-src="${thumbnailUrl}" alt="${loraPersianNames[lora.title] || lora.title}" onerror="this.onerror=null;this.src='https://placehold.co/300x300/e0e0e0/909090?text=Error';">`; |
|
|
loraGrid.appendChild(card); |
|
|
}); |
|
|
const lazyImages = document.querySelectorAll('.lora-card img'); |
|
|
imageObserver = new IntersectionObserver((entries, observer) => { |
|
|
entries.forEach(entry => { |
|
|
if (entry.isIntersecting) { |
|
|
const img = entry.target; |
|
|
img.src = img.dataset.src; |
|
|
img.onload = () => img.classList.add('loaded'); |
|
|
observer.unobserve(img); |
|
|
} |
|
|
}); |
|
|
}, { root: loraGrid, rootMargin: '0px 0px 200px 0px' }); |
|
|
lazyImages.forEach(img => imageObserver.observe(img)); |
|
|
} |
|
|
|
|
|
async function handleStyleSelection(event) { |
|
|
if (longPressJustHappened) { |
|
|
longPressJustHappened = false; |
|
|
return; |
|
|
} |
|
|
const card = event.target.closest('.lora-card'); |
|
|
if (!card) return; |
|
|
|
|
|
const cardTitleEn = card.dataset.loraTitle; |
|
|
const newLora = loras.find(lora => lora.title === cardTitleEn); |
|
|
|
|
|
if (!newLora) return; |
|
|
|
|
|
selectedLora = newLora; |
|
|
updateStyleDisplay(selectedLora); |
|
|
styleModal.style.display = 'none'; |
|
|
resetModalTitle(); |
|
|
|
|
|
if (fluxClient) { |
|
|
const btnText = document.getElementById('btn-text'); |
|
|
const btnSpinner = submitBtn.querySelector('.spinner'); |
|
|
const btnIcon = submitBtn.querySelector('svg'); |
|
|
|
|
|
submitBtn.disabled = true; |
|
|
btnText.textContent = `در حال تنظیم سبک...`; |
|
|
btnSpinner.style.display = 'inline-block'; |
|
|
btnIcon.style.display = 'none'; |
|
|
|
|
|
try { |
|
|
await fluxClient.predict("/add_custom_lora", { custom_lora: selectedLora.repo }); |
|
|
} catch (e) { |
|
|
displayError("خطا در تنظیم سبک. لطفاً دوباره امتحان کنید.", e); |
|
|
} finally { |
|
|
submitBtn.disabled = false; |
|
|
btnText.textContent = 'خلق کن!'; |
|
|
btnSpinner.style.display = 'none'; |
|
|
btnIcon.style.display = 'inline-block'; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
async function initializeClient(isCalledFromGenerate = false) { |
|
|
if (!isCalledFromGenerate) { |
|
|
const btnSpinner = submitBtn.querySelector('.spinner'); |
|
|
const btnText = document.getElementById('btn-text'); |
|
|
const btnIcon = submitBtn.querySelector('svg'); |
|
|
btnSpinner.style.display = 'inline-block'; |
|
|
btnIcon.style.display = 'none'; |
|
|
btnText.textContent = 'در حال اتصال...'; |
|
|
submitBtn.disabled = true; |
|
|
} |
|
|
|
|
|
try { |
|
|
fluxClient = await Client.connect("prithivMLmods/FLUX-LoRA-DLC"); |
|
|
await fluxClient.predict("/add_custom_lora", { custom_lora: selectedLora.repo }); |
|
|
|
|
|
if (!isCalledFromGenerate) { |
|
|
const btnSpinner = submitBtn.querySelector('.spinner'); |
|
|
const btnText = document.getElementById('btn-text'); |
|
|
const btnIcon = submitBtn.querySelector('svg'); |
|
|
btnSpinner.style.display = 'none'; |
|
|
btnIcon.style.display = 'inline-block'; |
|
|
btnText.textContent = 'خلق کن!'; |
|
|
submitBtn.disabled = false; |
|
|
} |
|
|
return true; |
|
|
} catch (error) { |
|
|
fluxClient = null; |
|
|
if (!isCalledFromGenerate) { |
|
|
displayError('ارتباط با سرور اصلی برقرار نشد. لطفاً اتصال را بررسی کنید یا دوباره تلاش کنید.', error); |
|
|
const btnText = document.getElementById('btn-text'); |
|
|
const btnSpinner = submitBtn.querySelector('.spinner'); |
|
|
const btnIcon = submitBtn.querySelector('svg'); |
|
|
btnText.textContent = 'تلاش مجدد'; |
|
|
submitBtn.disabled = false; |
|
|
btnSpinner.style.display = 'none'; |
|
|
btnIcon.style.display = 'inline-block'; |
|
|
} |
|
|
return false; |
|
|
} |
|
|
} |
|
|
|
|
|
async function generateImage() { |
|
|
if (submitBtn.disabled && !document.querySelector('.retry-button')) return; |
|
|
if (!selectedLora) { alert('لطفاً ابتدا یک سبک هنری را انتخاب کنید.'); return; } |
|
|
const userPrompt = promptInput.value.trim(); |
|
|
if (!userPrompt) { alert('لطفاً یک متن برای ساخت تصویر بنویسید.'); return; } |
|
|
|
|
|
setLoadingState(true, 'در حال پردازش...'); |
|
|
|
|
|
try { |
|
|
if (!fluxClient) { |
|
|
setLoadingState(true, 'در حال اتصال مجدد...'); |
|
|
const connected = await initializeClient(true); |
|
|
if (!connected) { |
|
|
const friendlyMessage = 'اتصال مجدد با سرور برقرار نشد. لطفاً اینترنت خود را بررسی کرده و دوباره تلاش کنید.'; |
|
|
setLoadingState(false); |
|
|
displayError(friendlyMessage, { message: "Connection failed on retry." }); |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
setLoadingState(true, 'در حال پردازش...'); |
|
|
const getDimensions = (ratio) => { |
|
|
if (ratio === 'custom') { |
|
|
return { width: customWidth, height: customHeight }; |
|
|
} |
|
|
switch (ratio) { |
|
|
case '9:16': return { width: 768, height: 1344 }; |
|
|
case '16:9': return { width: 1344, height: 768 }; |
|
|
default: return { width: 1024, height: 1024 }; |
|
|
} |
|
|
}; |
|
|
const dimensions = getDimensions(selectedRatio); |
|
|
|
|
|
const statusEl = document.getElementById('loading-status-text'); |
|
|
if (statusEl) statusEl.textContent = 'در حال ترجمه متن...'; |
|
|
|
|
|
const translatorClient = await Client.connect("hamed744/translate-tts-aloha"); |
|
|
const translationResult = await translatorClient.predict(1, [userPrompt, 'انگلیسی (آمریکا) - جنی (زن)', 0, 0, 0]); |
|
|
const translatedPrompt = translationResult.data[0]; |
|
|
if (!translatedPrompt) throw new Error("سرویس ترجمه یک متن خالی برگرداند."); |
|
|
|
|
|
startCountdown(30); |
|
|
|
|
|
const finalPrompt = `${selectedLora.trigger_word} ${translatedPrompt}`; |
|
|
|
|
|
const result = await fluxClient.predict("/run_lora", { |
|
|
prompt: finalPrompt, image_input: null, cfg_scale: 3.5, steps: 28, |
|
|
randomize_seed: true, seed: 0, |
|
|
width: dimensions.width, height: dimensions.height, lora_scale: 0.8, |
|
|
}); |
|
|
|
|
|
const imageData = result.data[0]; |
|
|
if (imageData && imageData.url) { |
|
|
displayResult(imageData.url); |
|
|
} else { |
|
|
throw new Error('پاسخ سرور فاقد تصویر بود.'); |
|
|
} |
|
|
setLoadingState(false); |
|
|
|
|
|
} catch (error) { |
|
|
let friendlyMessage = `خطا در ارتباط با سرور. لطفاً اتصال اینترنت خود را بررسی کرده و دوباره تلاش کنید.`; |
|
|
if (String(error.message).includes("hamed744/translate-tts-aloha")) { |
|
|
friendlyMessage = `خطا در سرویس ترجمه. لطفاً دقایقی دیگر دوباره امتحان کنید.`; |
|
|
} |
|
|
|
|
|
const rawErrorString = String(error?.message || error).toLowerCase(); |
|
|
const gpuErrorKeywords = ["gpu capacity", "unavailable", "exceeded", "quota", "queue is full"]; |
|
|
const isGpuError = gpuErrorKeywords.some(keyword => rawErrorString.includes(keyword)); |
|
|
|
|
|
if (!isGpuError) { |
|
|
fluxClient = null; |
|
|
} |
|
|
|
|
|
setLoadingState(false); |
|
|
displayError(friendlyMessage, error); |
|
|
} |
|
|
} |
|
|
|
|
|
function resetModalTitle() { |
|
|
modalTitle.innerHTML = originalModalTitleHTML; |
|
|
clearTimeout(longPressTimer); |
|
|
} |
|
|
|
|
|
const longPressDuration = 500; |
|
|
|
|
|
function handlePressStart(event) { |
|
|
const card = event.target.closest('.lora-card'); |
|
|
if (!card) return; |
|
|
|
|
|
longPressJustHappened = false; |
|
|
|
|
|
longPressTimer = setTimeout(() => { |
|
|
longPressJustHappened = true; |
|
|
const cardTitleEn = card.dataset.loraTitle; |
|
|
const loraData = loras.find(lora => lora.title === cardTitleEn); |
|
|
if (loraData) { |
|
|
const loraNameFa = loraPersianNames[loraData.title] || loraData.title; |
|
|
const thumbnailUrl = `https://wsrv.nl/?url=${encodeURIComponent(loraData.image)}&w=50&h=50&fit=cover&q=80&output=webp`; |
|
|
const newTitleHTML = ` |
|
|
<div class="style-info-box"> |
|
|
<img src="${thumbnailUrl}" class="style-info-image" alt="${loraNameFa}"> |
|
|
<div class="style-info-text"> |
|
|
<span class="persian-name">${loraNameFa}</span> |
|
|
<span class="english-name">${loraData.title}</span> |
|
|
</div> |
|
|
</div>`; |
|
|
modalTitle.innerHTML = newTitleHTML; |
|
|
} |
|
|
}, longPressDuration); |
|
|
} |
|
|
|
|
|
function handlePressEnd(event) { |
|
|
clearTimeout(longPressTimer); |
|
|
} |
|
|
|
|
|
loraGrid.addEventListener('mousedown', handlePressStart); |
|
|
loraGrid.addEventListener('touchstart', handlePressStart, { passive: true }); |
|
|
loraGrid.addEventListener('mouseup', handlePressEnd); |
|
|
loraGrid.addEventListener('mouseleave', handlePressEnd); |
|
|
loraGrid.addEventListener('touchend', handlePressEnd); |
|
|
|
|
|
stylePreviewContainer.addEventListener('click', () => { |
|
|
styleModal.style.display = 'flex'; |
|
|
if (loraGrid.children.length === 0) populateGrid(); |
|
|
}); |
|
|
|
|
|
closeModalBtn.addEventListener('click', () => { |
|
|
styleModal.style.display = 'none'; |
|
|
resetModalTitle(); |
|
|
}); |
|
|
|
|
|
window.addEventListener('click', (event) => { |
|
|
if (event.target === styleModal) { |
|
|
styleModal.style.display = 'none'; |
|
|
resetModalTitle(); |
|
|
} |
|
|
}); |
|
|
|
|
|
loraGrid.addEventListener('click', handleStyleSelection); |
|
|
submitBtn.addEventListener('click', generateImage); |
|
|
|
|
|
ratioSelector.addEventListener('click', (event) => { |
|
|
const selectedOption = event.target.closest('.ratio-option'); |
|
|
if (!selectedOption) return; |
|
|
const ratioValue = selectedOption.dataset.ratio; |
|
|
|
|
|
if (ratioValue === 'custom') { |
|
|
customSizeModal.style.display = 'flex'; |
|
|
} else { |
|
|
ratioSelector.querySelectorAll('.ratio-option').forEach(opt => opt.classList.remove('active')); |
|
|
selectedOption.classList.add('active'); |
|
|
selectedRatio = ratioValue; |
|
|
} |
|
|
}); |
|
|
|
|
|
closeCustomModalBtn.addEventListener('click', () => { |
|
|
customSizeModal.style.display = 'none'; |
|
|
}); |
|
|
|
|
|
customSizeModal.addEventListener('click', (event) => { |
|
|
if (event.target === customSizeModal) { |
|
|
customSizeModal.style.display = 'none'; |
|
|
} |
|
|
}); |
|
|
|
|
|
confirmCustomSizeBtn.addEventListener('click', () => { |
|
|
const width = parseInt(customWidthInput.value, 10); |
|
|
const height = parseInt(customHeightInput.value, 10); |
|
|
|
|
|
if (isNaN(width) || isNaN(height) || width < 512 || height < 512 || width > 1536 || height > 1536) { |
|
|
alert('مقادیر عرض و طول باید بین ۵۱۲ و ۱۵۳۶ پیکسل باشند.'); |
|
|
return; |
|
|
} |
|
|
|
|
|
if (width % 8 !== 0 || height % 8 !== 0) { |
|
|
alert('مقادیر عرض و طول باید بر ۸ بخشپذیر باشند.'); |
|
|
return; |
|
|
} |
|
|
|
|
|
customWidth = width; |
|
|
customHeight = height; |
|
|
selectedRatio = 'custom'; |
|
|
|
|
|
ratioSelector.querySelectorAll('.ratio-option').forEach(opt => opt.classList.remove('active')); |
|
|
document.querySelector('.ratio-option[data-ratio="custom"]').classList.add('active'); |
|
|
|
|
|
customRatioLabel.textContent = `${width} x ${height}`; |
|
|
customSizeModal.style.display = 'none'; |
|
|
}); |
|
|
|
|
|
clearResult(); |
|
|
|
|
|
function setInitialStyle() { |
|
|
selectedLora = loras[0]; |
|
|
updateStyleDisplay(selectedLora); |
|
|
} |
|
|
|
|
|
setInitialStyle(); |
|
|
initializeClient(); |
|
|
|
|
|
</script> |
|
|
|
|
|
<script> |
|
|
document.addEventListener('DOMContentLoaded', () => { |
|
|
const canvas = document.getElementById('neural-network-canvas'); |
|
|
if(!canvas) return; const header = canvas.parentElement; const ctx = canvas.getContext('2d'); |
|
|
let particles = []; const particleCount = 20; const maxDistance = 100; |
|
|
const computedStyles = getComputedStyle(document.documentElement); |
|
|
const particleColor = computedStyles.getPropertyValue('--accent-primary').trim(); |
|
|
const lineColor = computedStyles.getPropertyValue('--text-tertiary').trim(); |
|
|
function resizeCanvas() { canvas.width = header.clientWidth; canvas.height = header.clientHeight; init(); } |
|
|
class Particle { constructor() { this.x = Math.random() * canvas.width; this.y = Math.random() * canvas.height; this.vx = (Math.random() - 0.5) * 0.3; this.vy = (Math.random() - 0.5) * 0.3; this.radius = 1.2; } update() { this.x += this.vx; this.y += this.vy; if (this.x < 0 || this.x > canvas.width) this.vx *= -1; if (this.y < 0 || this.y > canvas.height) this.vy *= -1; } draw() { ctx.beginPath(); ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2); ctx.fillStyle = particleColor; ctx.fill(); } } |
|
|
function init() { particles = []; for (let i = 0; i < particleCount; i++) { particles.push(new Particle()); } } |
|
|
function connectParticles() { for (let i = 0; i < particles.length; i++) { for (let j = i + 1; j < particles.length; j++) { const dx = particles[i].x - particles[j].x; const dy = particles[i].y - particles[j].y; const distance = Math.sqrt(dx * dx + dy * dy); if (distance < maxDistance) { ctx.beginPath(); ctx.moveTo(particles[i].x, particles[i].y); ctx.lineTo(particles[j].x, particles[j].y); ctx.strokeStyle = lineColor; ctx.lineWidth = 0.2; ctx.globalAlpha = 1 - distance / maxDistance; ctx.stroke(); } } } ctx.globalAlpha = 1; } |
|
|
function animate() { if(!ctx) return; ctx.clearRect(0, 0, canvas.width, canvas.height); particles.forEach(particle => { particle.update(); particle.draw(); }); connectParticles(); requestAnimationFrame(animate); } |
|
|
window.addEventListener('resize', resizeCanvas); resizeCanvas(); animate(); |
|
|
}); |
|
|
</script> |
|
|
|
|
|
</body> |
|
|
</html> |