Qt Designer. Масштабирование изображения

Куда в Qt Designer и что мне прописать чтобы картинка поместилась полностью,
но в маленьком размере?

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Fox Fox

Я не знаю, как это будет работать в дизайнерах и прочем. Я даже не понимаю из условия для какого языка вопрос. Буду говорить для Питон. Для того, чтобы разместить миниатюру в форме, для начала я слепил вот такую функцию:

import PIL.Image as PILImage
import PIL.ImageTk as PILImageTk
import io as io

def lib_resize_image(image_data = "", canvas_width = 200, canvas_height = 200):

 if not image_data: image_s = None
 else:
  img = PILImage.open(io.BytesIO(image_data))
  img_width, img_height = img.size

  img_ratio = img_width / img_height
  canvas_ratio = canvas_width / canvas_height

  if img_ratio > canvas_ratio:
   new_width = canvas_width
   new_height = int(canvas_width / img_ratio)
  else:
   new_height = canvas_height
   new_width = int(canvas_height * img_ratio)

  img_resized = img.resize((new_width, new_height), PILImage.BICUBIC)

  new_img = PILImage.new("RGB", (canvas_width, canvas_height), "black")
  position = ((canvas_width-new_width) // 2, (canvas_height-new_height) // 2)
  new_img.paste(img_resized, position)

  image_s = PILImageTk.PhotoImage(new_img)

 return image_s

Назначение функции - создать миниатюру требуемого размера из изображения, её уже можно будет поместить в Canvas в форме. В функцию в качестве параметров передаётся содержимое графического файла (вот просто содержимое) и размеры Canvas. Оформление может выглядеть так:

  image_s = lib_resize_image(image_data = "считанное в переменную изображение", canvas_width = 300, canvas_height = 300)
  mycanvas.delete("all")
  mycanvas.create_image(0, 0, image = image_s, anchor = "nw")

В результате миниатюра будет размещена в Canvas, но в зависимости от размеров исходного изображения и размеров Canvas появятся чёрные полосы - с боков или сверху и снизу. В реале у меня работает немножко не так. Изображения у меня хранятся в базе данных sqlite3. Я считываю содержимое поля BLOB (которое просто склад изображений), передаю содержимое в функцию и получаю миниатюру заданного размера для размещения в Canvas.

→ Ссылка
Автор решения: S. Nick
  1. Установите размер для QLabel

введите сюда описание изображения


  1. scaledContents : bool

Это свойство определяет, будет ли метка масштабировать свое содержимое, чтобы заполнить все доступное пространство.
Если этот параметр включен и на метке отображается растровое изображение, растровое изображение будет масштабироваться, чтобы заполнить доступное пространство.
По умолчанию это свойство имеет значение false.

введите сюда описание изображения


Ok.png

введите сюда описание изображения

→ Ссылка