如果我的知识是正确的,SAR(存储纵横比)是像素尺寸的比率。例如,640 × 480 视频的 SAR 为 640/480 = 4:3。
而 PAR(Pixel Aspect Ratio)是像素高度和宽度的比率,大多数现代视频都有方形 PAR (1:1)。
但是当我试图用它来检查它时,ffmpeg -i我得到了所有测试视频的方形 SAR 而不是方形 PAR。
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1758 kb/s, 24.99 fps, 25 tbr, 25 tbn, 50 tbc
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 540x360 [SAR 1:1 DAR 3:2], 386 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), …Run Code Online (Sandbox Code Playgroud) 我正在研究 PyQt5 GUI,到目前为止,我只是有使用 python 脚本的经验,并没有深入研究创建用户界面。
GUI 必须用于不同的屏幕(可能还有一些旧的 4:3 比例屏幕),并且需要在不同尺寸下看起来不错。现在,我让我的生活更轻松的方法是强制执行窗口的固定纵横比并根据窗口大小调整不同元素的大小。
from PyQt5 import QtCore, QtGui, QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent= None):
super().__init__(parent)
self.form_widget = FormWidget(self)
self.setCentralWidget(self.form_widget)
self.resize(200, 400)
self.sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
self.sizePolicy.setHeightForWidth(True)
self.setSizePolicy(self.sizePolicy)
def heightForWidth(self, width):
return width * 2
class FormWidget(QtWidgets.QWidget):
def __init__(self, parent):
super().__init__(parent)
def resizeEvent(self, event):
f = self.font()
temp = event.size().height()
f.setPixelSize(temp / 16)
self.setFont(f)
return super().resizeEvent(event)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
根据窗口大小调整元素大小工作正常,但根本不保留窗口纵横比。我heightForWidth从旧的 PyQt4 …
我有一些内容需要不同的样式最终基于宽高比(基本上它是针对一个平台,但作为一个"会很好"我想让内容至少在其他平台上显得正确).我发现Droid 2(Android 2.2股票)没有响应任何这些查询:
only all and (device-aspect-ratio: 854/480)
only all and (device-aspect-ratio: 480/854)
only all and (aspect-ratio: 854/480)
only all and (aspect-ratio: 480/854)
Run Code Online (Sandbox Code Playgroud)
手机或操作系统是否不支持宽高比查询?Droid 2是否充满悲伤?到目前为止,宽高比测试对iPhone 3GS/4/4S和iPad来说非常有效.或者,如果他们实际上不支持设备宽高比,那么在我的iOS宽高比测试后,有人会建议处理Droid 2/Nexus分辨率.
我正试图回避使用max-width,因为横向上的某些Android设备比纵向上的iPad宽,而且我遇到了设备根据设定宽度错误地识别为iPad的冲突.任何见解将不胜感激.
我刚看到iPhone 5的发布,它说像素分辨率已经变为1136*640,这就影响了应用程序的ASPECT RATIO.
我应该如何在我的Cocos2d游戏中处理这个问题?我为"旧的"960*640视网膜显示屏完成了所有图形,我猜这些将在iPhone 5屏幕上扭曲.
我对吗?或者是否会显示"旧分辨率"图像而不修改宽高比并使某些屏幕变黑?
编辑:有没有办法让Cocos2d检测它是否是iPhone 5,在这种情况下在屏幕的顶部绘制背景文件(前960像素)并获得一些其他自定义背景文件在剩余像素中绘制(例如,那些可能是一些自定义广告横幅或我们的游戏仅适用于iPhone 5的一些额外按钮).
我正在寻找一种方法来使 Tkinter Frames 在调整大小时表现得有点像这样:
from Tkinter import *
w = Tk()
w.aspect(1,1,1,1)
w.mainloop()
Run Code Online (Sandbox Code Playgroud)
所以我想要这里的代码:
import Tkinter as tk
from Tkconstants import *
r=tk.Tk()
content_frame=tk.Frame(r,borderwidth=5,relief=GROOVE)
content_frame.grid(row=0,column=0,sticky=(N,S,E,W))
tk.Label(content_frame,text='content').pack()
pad_frame=tk.Frame(r,borderwidth=5,relief=GROOVE)
pad_frame.grid(row=1,column=0,sticky=(N,S,E,W))
tk.Label(pad_frame,text='-pad-').pack()
r.rowconfigure(0, weight=1)
r.rowconfigure(1, weight=1)
r.columnconfigure(0, weight=1)
r.mainloop()
Run Code Online (Sandbox Code Playgroud)
它基本上创建了 2 个框架,一个应该包含一些内容(在我的应用程序中,这个框架包含一个可以调整大小的 mathplotlib 图)和一个仅用于填充。
要按照以下规则调整大小:
有任何想法吗?我已经阅读了一段时间的手册,似乎找不到合适的东西。
-丹尼尔
我的CSS问题只在FireFox中可见(cur.ver.31).我正在尝试制作一个响应式布局,带有一排图像(带有链接),这些图像居中,并且具有与视口宽度相同的高度和比例.我的方法是创建一个具有固定宽高比的容器,并将图像放在里面(每个图像在一个单独的<a>标签内),居中,然后将它们的高度缩放到容器高度.它在FireFox中除外,效果很好.要做到这一点我申请display: inline-block; height: 100%到<a>标签和height: 100%; width: auto以<img>标签.对于某些(未知)原因,FF没有<a>正确计算标签的宽度(当它包含上述<img>标签时)并且它水平折叠.结果是,所有<a>具有0宽度的所有宽度彼此非常接近(仅由白色空间分开),并且图像彼此重叠.我display: block; float: left;在<a>标签上得到了相同的结果.
CSS
.container-ratio {
width: 100%;
height: 0;
position: relative;
padding-bottom: 10%;
background: #ddd;
}
.container-inner {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: #ddf;
text-align: center;
}
.block {
display: inline-block;
height: 100%;
background: #f00;
}
.block img {
height: 100%;
width: auto;
display: block;
} …Run Code Online (Sandbox Code Playgroud) 题
如何以编程方式准确地确定在设备屏幕尺寸上显示摄像头预览的应用程序的最佳预览大小?(或者在可变尺寸的任何视图中,真的).
在您尝试将其标记为数百万其他方面比例之一的相关问题之前,请理解我正在寻找与通常可用的解决方案不同的解决方案.我问这个问题,因为我已经阅读了很多"答案",但他们都指出了一种我认为不完整的解决方案(并且可能存在缺陷,我将在这里描述).如果这不是一个缺陷,请帮助我理解我做错了什么.
我已经阅读了很多关于应用程序如何选择预览大小的不同实现,并且大多数采用的方法是我称之为"足够接近"的方法(您可以根据减去大小选项的比例来确定哪个选项最佳)屏幕分辨率的比率,并找到具有最低值的选项).这种方法似乎无法确保它选择最佳选择,但确保它不会选择最差的选项.
例如,如果我尝试在屏幕分辨率为的设备上迭代每个可用的预览大小720x1184并显示预览全屏(720x1184),这里是相机预览的结果(按照格式中最接近屏幕分辨率的选项排序abs(ratio of size option - screen resolution ratio)) .所有尺寸均来自.getSupportedPreviewSizes).("结果"来自使用测试用例的视觉观察,使用静态圆圈出现在相机的取景器中并且不是程序化的)
720.0/1184.0 = 0.6081081081081081
Res Ratio Delta in ratios Result
----------------------------------------------------
176/144 = 1.22222222222 (0.614114114114) (vertically stretched)
352/288 = 1.22222222222 (0.614114114114) (vertically stretched)
320/240 = 1.33333333333 (0.725225225225) (vertically stretched)
640/480 = 1.33333333333 (0.725225225225) (vertically stretched)
720/480 = 1.5 (0.891891891892) (vertically stretched)
800/480 = 1.66666666667 (1.05855855856) (looks good)
640/360 = 1.77777777778 (1.16966966967) (horizontally squashed) …Run Code Online (Sandbox Code Playgroud) 我有一个固定宽度和高度的UIImageView.我不想改变UIImageView的框架.我想让它保持一个图像,我保持纵横比,我适应宽度,让图像太高,或太短,UIImageView的框架.像这样:
红色是UIImageView的框架.灰色是显示的实际图像.
我已经为我的应用程序设置了一个加载屏幕(启动),通过一些建议解释了"正确的方法":
styles.xml:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_vector_drawable</item>
</style>
Run Code Online (Sandbox Code Playgroud)
表现:
<activity
android:name="com.tba.versionc.SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
Java的:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
当我为启动画面设计矢量drawable时,我设置它的宽高比以匹配我的手机(16:9),它似乎工作正常,但我担心在设备上运行时会出现的宽高比会发生什么屏幕比例不同.
为了消除它"伸展以适应"错误尺寸屏幕的可能性,我宁愿它是中心裁剪,但由于它不是ImageView,甚至是布局文件的一部分,我不知道有什么办法设置中心裁剪属性.
任何人?
我发现这个 css 代码可以让我保持 div 的长宽比。
.container {
width: 100%;
height: 100%;
background-color: red;
position: absolute;
}
.wrapper {
width: 100%;
/* whatever width you want */
display: inline-block;
position: relative;
top: 50%;
transform: translate(0%, -50%);
}
.wrapper:after {
padding-top: 56.25%;
/* 16:9 ratio */
display: block;
content: '';
}
.main {
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
/* fill parent */
background-color: deepskyblue;
/* let's see it! */
color: white;
}
Run Code Online (Sandbox Code Playgroud)
请参阅此 JSFiddle 示例:https ://jsfiddle.net/1uyo07tg/3/ …