Felguk commited on
Commit
d848284
·
verified ·
1 Parent(s): db5b7cc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -38
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
  import PyPDF2
4
- from PIL import Image
5
  import cv2
6
  import numpy as np
7
  from pydub import AudioSegment
@@ -14,6 +14,8 @@ from torchvision.transforms import functional as F
14
  import tempfile
15
  import time
16
  import requests
 
 
17
 
18
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
19
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
@@ -22,36 +24,6 @@ client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
22
  model = fasterrcnn_resnet50_fpn(pretrained=True)
23
  model.eval()
24
 
25
- # API для модели NSFW
26
- API_URL = "https://api-inference.huggingface.co/models/Falconsai/nsfw_image_detection"
27
- headers = {"Authorization": "Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} # Замените на ваш API-токен
28
-
29
- # Функция для определения NSFW в изображении
30
- def detect_nsfw(image):
31
- if image is None:
32
- return "Изображение не загружено."
33
-
34
- # Сохраняем изображение во временный файл
35
- with tempfile.NamedTemporaryFile(suffix=".jpg", delete=False) as tmp_file:
36
- image.save(tmp_file.name)
37
- filename = tmp_file.name
38
-
39
- # Отправка изображения в модель NSFW через API
40
- try:
41
- with open(filename, "rb") as f:
42
- data = f.read()
43
- response = requests.post(API_URL, headers=headers, data=data)
44
- result = response.json()
45
-
46
- # Обработка результата
47
- if isinstance(result, list) and len(result) > 0 and "score" in result[0]:
48
- nsfw_score = result[0]["score"]
49
- return f"Процент NSFW: {nsfw_score * 100:.2f}%"
50
- else:
51
- return "Не удалось определить NSFW. Попробуйте другое изображение."
52
- except Exception as e:
53
- return f"Ошибка при обработке изображения: {str(e)}"
54
-
55
  # Функция для обработки PDF
56
  def process_pdf(file):
57
  pdf_reader = PyPDF2.PdfReader(file)
@@ -199,6 +171,37 @@ def analyze_txt(file):
199
  text = process_txt(file)
200
  return f"Содержимое файла:\n{text}"
201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
  # Создание интерфейса
203
  with gr.Blocks() as demo:
204
  # Заголовок с изображением
@@ -253,13 +256,15 @@ with gr.Blocks() as demo:
253
  convert_button = gr.Button("Конвертировать")
254
  convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
255
 
256
- # Вкладка Felguk Don't Like NSFW
257
- with gr.Tab("Felguk Don't Like NSFW"):
258
- gr.Markdown("## Felguk Don't Like NSFW: Определение NSFW в изображении")
259
- nsfw_input = gr.Image(label="Загрузите изображение", type="pil")
260
- nsfw_output = gr.Textbox(label="Результат", interactive=False)
261
- nsfw_button = gr.Button("Проверить на NSFW")
262
- nsfw_button.click(fn=detect_nsfw, inputs=nsfw_input, outputs=nsfw_output)
 
 
263
 
264
  # Интерфейс чата
265
  chat_interface = gr.ChatInterface(
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
  import PyPDF2
4
+ from PIL import Image, ImageFont, ImageDraw
5
  import cv2
6
  import numpy as np
7
  from pydub import AudioSegment
 
14
  import tempfile
15
  import time
16
  import requests
17
+ import zipfile
18
+ import os
19
 
20
  # Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
21
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
 
24
  model = fasterrcnn_resnet50_fpn(pretrained=True)
25
  model.eval()
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  # Функция для обработки PDF
28
  def process_pdf(file):
29
  pdf_reader = PyPDF2.PdfReader(file)
 
171
  text = process_txt(file)
172
  return f"Содержимое файла:\n{text}"
173
 
174
+ # Функция для генерации изображения с текстом и шрифтом
175
+ def generate_text_image(text, font_file, font_size=40):
176
+ if not text:
177
+ return "Введите текст."
178
+
179
+ # Если шрифт не загружен, используем стандартный
180
+ if font_file is None:
181
+ font = ImageFont.load_default()
182
+ else:
183
+ # Если шрифт в архиве, извлекаем его
184
+ if font_file.name.endswith(".zip"):
185
+ with zipfile.ZipFile(font_file.name, 'r') as zip_ref:
186
+ zip_ref.extractall("temp_fonts")
187
+ font_files = [f for f in os.listdir("temp_fonts") if f.endswith(('.ttf', '.otf'))]
188
+ if not font_files:
189
+ return "В архиве нет файлов шрифтов (.ttf, .otf)."
190
+ font_path = os.path.join("temp_fonts", font_files[0])
191
+ font = ImageFont.truetype(font_path, font_size)
192
+ else:
193
+ font = ImageFont.truetype(font_file.name, font_size)
194
+
195
+ # Создаем изображение с текстом
196
+ image = Image.new("RGB", (800, 200), color="white")
197
+ draw = ImageDraw.Draw(image)
198
+ draw.text((10, 10), text, font=font, fill="black")
199
+
200
+ # Сохраняем изображение во временный файл
201
+ with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp_file:
202
+ image.save(tmp_file.name)
203
+ return tmp_file.name
204
+
205
  # Создание интерфейса
206
  with gr.Blocks() as demo:
207
  # Заголовок с изображением
 
256
  convert_button = gr.Button("Конвертировать")
257
  convert_button.click(fn=convert_image, inputs=[img_input, img_format], outputs=img_output)
258
 
259
+ # Вкладка Felguk Fonts
260
+ with gr.Tab("Felguk Fonts"):
261
+ gr.Markdown("## Felguk Fonts: Генерация текста с шрифтом")
262
+ text_input = gr.Textbox(label="Введите текст", placeholder="Введите текст здесь...")
263
+ font_input = gr.File(label="Загрузите шрифт (.ttf, .otf, .zip)", file_types=[".ttf", ".otf", ".zip"])
264
+ font_size_input = gr.Slider(minimum=10, maximum=100, value=40, label="Размер шрифта")
265
+ generate_button = gr.Button("Сгенерировать изображение")
266
+ image_output = gr.Image(label="Результат", type="filepath")
267
+ generate_button.click(fn=generate_text_image, inputs=[text_input, font_input, font_size_input], outputs=image_output)
268
 
269
  # Интерфейс чата
270
  chat_interface = gr.ChatInterface(