防止图像在全屏中拉伸以获得心理感受

问题描述 投票:2回答:1

这是我第一次使用这个软件来创建实验。

对于我的实验,我并排呈现两个图像,理想情况下我想在全屏幕中运行此实验但是当我将值设置为true时,图像会变得拉伸。我如何修复它们的宽高比,这样我就可以在不拉伸图像的情况下全屏运行程序?

我正在使用MacBook Pro和PsychoPy编码器。

这是我目前的图像代码:

scale=0.7
faceRGB = visual.ImageStim(win,image='male.jpg', 
mask=None,
pos=(0.0,0.0),
size=(scale,scale))


faceRGBINV = visual.ImageStim(win,image='maleInv.jpg', 
mask=None,
pos=(0.0,0.0),
size=(scale,scale)`

此外,在我的实验中,其中一个图像将被轻微压缩或拉伸。然后参与者将不得不选择更胖的脸。这已经设置好了,当在一个窗口中运行时,图像显示正常,当它们被拉伸以适合显示器尺寸时,它只是处于全屏模式。

python psychopy
1个回答
1
投票

默认情况下,PsychoPy使用'norm'作为单位,其大小标准化为窗口尺寸。您可能会遇到以下情况:(1)更改图像的大小;(2)当在默认的800 x 800像素窗口中显示时,图像恰好具有正确的尺寸,但是当您全屏显示时,图像会显得拉伸,因为您的显示器具有另一个长宽比。

如果您不更改图像的大小,PsychoPy会保持正确的宽高比。缩放图像将保留此宽高比,因此这是一个简单的解决方案。例如。启动ImageStim后添加一行:

scale = 0.7

from psychopy import visual
win = visual.Window(fullscr=True)
faceRGB = visual.ImageStim(win, 'male.jpg')
faceRGB.size *= scale  # scale the image relative to initial size

如果要直接控制大小而不是按比例控制大小,请参阅用户列表中的this discussion。我提出了以下解决方案。假设您要设置图像大小,以便scale是沿x- og y轴的最大长度,并按比例缩放另一个轴。用以下内容替换上面的最后一行:

faceRGB.size *= scale / max(faceRGB.size)

乘法保持纵横比如上,右侧是倍增因子,以确保scale。如果您希望将max应用于最小长度而不是最大长度,请将min更改为pos=(0,0)

注意:您不需要设置mask=None和qazxswpoi,因为这是这些参数的默认值。

© www.soinside.com 2019 - 2024. All rights reserved.