告诉我我的屏幕分辨率!


33

以(不带括号)的特定格式输出设备的屏幕分辨率[width]x[height]。例如,输出可能是1440x900

这是一个在线测试仪,您可以用来检查自己的屏幕分辨率。


17
特定的输出格式不好玩,但现在更改现在为时已晚
Luis Mendo

3
如果连接了多个显示器,该怎么办?
乔纳森·艾伦

4
我想我们不允许先更改您的分辨率,然后再告诉您这些值,对吗?
Engineer Toast

3
:APL \ 360(只能在IBM / 360打字机环境中运行),5个字节'0x0'
ADAM

4
我喜欢这种取消大多数高尔夫语言的资格,并鼓励人们探索实用语言的局限性。
罗比(Robbie)

Answers:


38

JavaScript(ES6),32个字节

(_=screen)=>_.width+"x"+_.height

输出为函数returnf=在开头添加并调用like f()。使用参数初始化将参数初始化_screen对象。其余的不言而喻。

f=(_=screen)=>_.width+"x"+_.height
console.log(f())

注意:向此函数传递参数将导致其失败。


JavaScript(以前的解决方案),35字节

with(screen)alert(width+"x"+height)

没想到我会一天使用with!我认为这不能再打了。


如果允许REPL,则s=screen,s.width+"x"+s.height(29个字符)也可以使用。
科比

哦 善用默认参数值。
马修·鲁

这个35字节的解决方案可以省去五个字节,方法是alertwith(screen)(width+'x'+height)仅返回适当的字符串。
KRyan

2
这个答案从根本上是有缺陷的。我可以通过放大和缩小浏览器来作弊!
大鸭

1
拜托,你们甚至在尝试:_=screen,_.width+"x"+_.height,29个字节
M28,2017年

33

TI-BASIC,30 32 29字节(非竞争?)

*叹气* TI-BASIC为每个小写字母占用一个额外的字节。

+2感谢@Timtech

-3感谢@Timtech

:If ΔX>.1
:Then
:Disp "96x64
:Else
:Disp "320x240

之所以如此,是因为TI-BASIC只能在具有两种不同屏幕分辨率的计算器上运行:96 x 64和320 x240。我只是通过将Zoom设置为根据屏幕分辨率而有所不同的东西,来查看我所拥有的屏幕输出正确的分辨率。

我现在将其标记为不竞争,因为它是硬编码的。


6
那是一个聪明的虐待;)
马修·罗

1
您可以通过不使用ZDecimal然后使用不同的Xmax比较来保存至少一个字节。另外,我认为您需要使用x两个字节(x2)的小写字母,而不是一字节的大写字母。
Timtech '17

@Timtech我必须使用两个字节的Zoom(如ZDecimal),因为ZStandard两个计算器的默认zoom()相同。不过,我将解决大小写问题。
斯科特·米尔纳

1
哦,我明白你的意思。如果使用ZStandardΔX计算器之间会有所不同吗?另外,ZDecimal由于只有1个字节,因此为31个字节。
Timtech '17

2
由于某种原因,我的即时反应是“这是有效的,但如果只有一种可能的屏幕分辨率,那将是无效的”,但是这种观点似乎在内部是不一致的。因此,我真的不确定这是否在作弊。

20

JavaScript(ES6),32个字节

_=>(s=screen).width+'x'+s.height

console.log((_=>(s=screen).width+'x'+s.height)())


2
lambda版本是可以接受的
Felipe Nardi Batista

6
_=>(s=screen).width+'x'+s.height保存一个字节
Felipe Nardi Batista

@FelipeNardiBatista谢谢,这个念头也刚出现在我身上:)
SethWhite '17

1
做得好!+1 :)
Arjun

5
我喜欢所有的JS条目始终比大量其他答案都短。几乎永远不会发生。
Draco18s

11

macOS,bash,awk,grep,tr,51 52字节

/*/*/sy*r SPDisplaysDataType|awk '/so/{print$2$3$4}'

运行system_profiler,获取SPDisplaysDataType信息,搜索的第一个soResolution,并打印屏幕分辨率。对于多屏幕,这会打印所有分辨率。

Example of the command running.


先前的不合规变体:

/*/*/sy*r SPDisplaysDataType|grep so|tr -d 'R :a-w'

我只是在装有第二个显示屏的MacBook Pro上运行了此程序。我知道了2880x1800\n1920x1080@60Hz(两行)。我不知道这是否不符合条件...或?
弗洛里斯

OP设置了@Floris是否指定了有多个屏幕时的行为?
曼队长

否-但格式@60Hz显然不符合规范。
弗洛里斯

我想您可以使用|sed 1q,将字节数增加到58个字节。
zgrep

我通过切换到awk一个额外的字节并修复了不符合项。:)
zgrep


9

处理3,37个字节

fullScreen();print(width+"x"+height);

fullScreen()使应用程序以最大尺寸-显示分辨率启动。比明显的少一个字节

print(displayWidth+"x"+displayHeight);

8

AutoHotKey,34个字节

SysGet,w,0
SysGet,h,1
Send,%w%x%h%

将此文件保存为扩展名为.AHK的文件,然后在命令提示符下运行


1
为什么不使用Send而不是MsgBox
工程师吐司

@EngineerToast谢谢!节省了两个字节
jmriego

7

C(Windows),79 78 77字节

感谢@Johan du Toit节省了一个字节!

#import<windows.h>
#define G GetSystemMetrics
f(){printf("%dx%d",G(0),G(1));}

2
在看到您的答案之前,我仍然在弄乱'GetDeviceCaps':-)您仍然可以使用以下方法节省1个字节:#define G GetSystemMetrics f(){printf("%dx%d",G(0),G(1));}
Johan du Toit

7

PowerShell,67岁 60 55字节

-7感谢Martin Ender

-5(实际上是12!)从 Leaky Nun的,Regex巫术超出了我。

这很长,但不长于可怕的System.Windows.Forms.SystemInformation.PrimaryMonitorSize解决方案

(gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"

首先,我们Get-WmiObjectgwmi)检索Win32_VideoController包含名为的成员的对象,该成员VideoModeDescription是格式的字符串1920 x 1080 x 4294967296 colors,然后运行正则表达式替换以获取正确的格式。

PS H:\> (gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
1920x1080

我认为(gwmi win32_videocontroller|% v*n)-replace" |x[^x]+$"通过调整正则表达式可以节省几个字节。
TessellatingHeckler,2017年

6

Mathematica,51个字节

SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]~Infix~x

这可能对您不起作用,具体取决于您连接的设备(我不知道)。这应该总是可行的(假设您至少连接了一个屏幕):

Infix[Last/@("FullScreenArea"/.SystemInformation["Devices","ScreenInformation"][[1]]),x]

说明

SystemInformation[] 返回形式的表达式

SystemInformationData[{
  "Kernel" -> {__},
  "FrontEnd" -> {__},
  "Links" -> {__},
  "Parallel" -> {__},
  "Devices" -> {__},
  "Network" -> {__},
}]

我们感兴趣的是"Devices",可以直接访问SystemInformation["Devices"]SystemInformation[][[1,5,2]]。结果将是表单的列表

{
  "ScreenInformation" -> {__},
  "GraphicsDevices" -> {__},
  "ControllerDevices" -> {__}
}

我们想要"ScreenInformation",它可以像SystemInformation["Devices","ScreenInformation"]或更简洁地访问SystemInformation[][[1,5,2,1,2]]。结果将为以下形式

{
  {
  "ScreenArea" -> {__},
  "FullScreenArea" -> {{0,w_},{0,h_}},
  "BitDepth" -> _,
  "Resolution" -> _
  },
  ___
}

列表的长度将是您已连接的屏幕数。第一个屏幕是SystemInformation[][[1,5,2,1,2,1]],宽度和高度可以提取为,SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]然后我们只需Infix x为输出格式插入即可。


6

Java 7中,123个 114字节

String f(){java.awt.Dimension s=java.awt.Toolkit.getDefaultToolkit().getScreenSize();return s.width+"x"+s.height;}

由于此方法使用awt库,因此在Java的无头安装中(如在TIO上)将无法使用。在幕后,调用getScreenSize使用Java Native Interface调用(通常进入C库)屏幕宽度和屏幕高度。

-9个字节,感谢OlivierGrégoire提醒我,我可以返回字符串而不是打印它。


2
我正要张贴...
漏水的尼姑,

@LeakyNun你和我俩。+1
凯文·克鲁伊森

太糟糕的输出被限制到...x...,因为void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]",""));}其输出1920,1200是较短..
凯文Cruijssen

1
@KevinCruijssen是的,我也尝试过使用它。真正的“太糟糕了”是,在Java中使用正则表达式在字节数方面是如此繁重。

1
@P你确实是对的。我已经能够使用我看到前面有x,而不是,通过使用一些正则表达式替换,但它的五个字节超过您目前的答案是:void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]","").replace(",","x"));}void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll(".*?(\\d+).*?(\\d+).*","$1x$2"));}很好啊,究竟是不是在Java中重..,P
凯文Cruijssen

6

C#,101 95 89字节

_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};

通过@TheLethalCoder来提醒-6个字节,这使我想起OP没有提及打印,因此返回字符串也可以。并通过将其更改为lambda来增加-6个字节。


通过编译为Func<string>:可以节省11个字节()=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};。但是,您有一个返回值,void但您正在返回一个值,string因此您需要为此添加2个字节。
TheLethalCoder

1
挑战还没有说明您不能接受输入,因此您可以添加未使用的输入来保存另一个字节,即_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
TheLethalCoder

1
呵呵,不要理会您将结果写出来的返回注释,可以通过返回节省6个字节。
TheLethalCoder

而且,除非您能想到将其缩短的var s=System.Windows.Forms.Screen.AllScreens[0].Bounds;方法也一样,但您可以牢记这一想法。
TheLethalCoder

6

Bash + Xrandr,44个字符

read -aa<<<`xrandr`
echo ${a[7]}x${a[9]::-1}

xrandr属于X服务器,在Ubuntu上由x11-xserver-utils软件包提供。

样品运行:

bash-4.3$ read -aa<<<`xrandr`;echo ${a[7]}x${a[9]::-1}
1920x1080

xrandr + grep + util-linux,30个字符

xrandr|grep -oP '\d+x\d+'|line

谢谢:

样品运行:

bash-4.3$ xrandr|grep -oP '\d+x\d+'|line
1920x1080

我没有带显示器的重击器,可以xrandr|grep *吗?
乔纳森·艾伦

当然。但是到目前为止,my grepparssed解析xrandr输出的尝试(pastebin.com/uTVcjWCq)更长。
manatwork '17

也许xrandr|grep *|cut -d' ' -f1吧?(使用粘贴信息中的匹配行@ TIO
乔纳森·艾伦

嗯,您是说从列表中以“ *”号标记分辨率?考虑到这种可能性,但是我不确定是否可以在连接多个显示器的情况下使用。记得我会列出每个连接的显示器的当前分辨率。
manatwork'5

嗯,是的,但是不确定在这种情况下OP会想要什么!
乔纳森·艾伦

5

Python 2,73个字节

from ctypes import*
u=windll.user32.GetSystemMetrics;
print u(0),'x',u(1)

print u(0),'x',u(1)较小并且他的示例(链接)允许这样做
Felipe Nardi Batista

1
To clarify, If it's equivalent to the output from What is my screen resolution, It's valid.在该网站中,每个部分之间都有空间
Felipe Nardi Batista

@FelipeNardiBatista更新,谢谢。
尼尔

5

八度,41字节

感谢@Arjun@StephenS的更正。

fprintf('%ix%i',get(0,'ScreenSize')(3:4))

0是根图形对象的句柄。它的属性'ScreenSize'包含屏幕坐标(以像素为单位)。第三和第四项给出所需的信息。


5

APL(Dyalog),23字节

' 'R'x'⍕⌽⊃⎕WG'DevCaps'

⎕WG'DevCaps'W¯¯ indow ģ开发 abilitie 小号

 选择第一个属性(高度,宽度)

 相反

 格式化为文本

' '⎕R'x'[R E放置空间用“×”


“在位置5(空格)处用“ x”代替”会在小屏幕上引起问题,例如640x480(VM使用)
Baldrickk

4

Japt,24字节

Ox`ØP(s×Çn)±d+"x"+ight

在线测试!

压缩的字符串表示with(screen)width+"x"+heightOx将其评估为JavaScript,并隐式打印结果。


4

C(SDL2库)113 88 84

(由于@AppleShell的帮助,-4个字符)

是。它编译。

m[3];main(){SDL_Init(32);SDL_GetDesktopDisplayMode(0,m);printf("%dx%d",m[1],m[2]);}

运行: gcc snippet.c -lSDL2 && ./a.out


3
我认为您可以通过m全局设置和省略来缩短此时间intm[3];main(){...
Appleshell

访问的时间m+1应该短于m[1]正确的时间?还是在C中但仅在C ++中不可能?肯定printf有一些取消引用令牌
Gizmo

不幸的是,@ gizmo AFAIK没有执行此操作的printf说明符..
Dieter

4

Python 2 2,61 49字节

感谢@ Jonathan-allan,@ felipe-nardi-batista

from Tkinter import*
print'%sx%s'%Tk().maxsize()

对于单一显示设置,这与站点的输出匹配。这样可以为多个显示器提供整体分辨率。


print'x'....保存一个字节
Felipe Nardi Batista

v=Tk().maxsize()print'%sx%s'%v节省9个字节。
乔纳森·艾伦

哎呀,然后print'%sx%s'%Tk().maxsize()保存另外4个> _ <
乔纳森·艾伦

3

bash + xdpyinfo 42 31字节

xdpyinfo|grep dim|cut -d' ' -f7

从手册页:

xdpyinfo - is  a utility for displaying information about an X server.

@Floris @manatwork感谢您节省一些字节!


划掉4仍然是4 :(
Christopher

管道周围不需要空间;我认为仅搜索“暗淡”是安全的;您可以-d\ 代替来写-d' '。然后,当涉及到grep一行和该行cut的一部分时,通常只需一次awk调用即可缩短:xdpyinfo|awk '/dim/&&$0=$2'
manatwork'5

我怀疑您可以将某些内容短于grep,dimensionsxdpyinfo我的系统上却没有...
Floris

3

xrandr + awk,25个字节

xrandr|awk /\*/{print\$1}

在此处输入图片说明


1
这行不通。grep *将星号扩展到目录中的所有文件。
詹斯(Jens)

@Jens更正。感谢您指出
Pandya'5

谢谢; 另一个提示:的正确拼写grep|cutawk
詹斯(Jens)

它仍然不起作用。它输出*0。我的xrandr输出是*0 3360 x 1050 ( 889mm x 278mm ) *0
詹斯(Jens)

@Jens,那么您需要-f2Btw,可以检查xrandr|awk '/\*/{print $2}'吗?
潘迪

3

ZX Spectrum Basic,10个字节

仅出于完整性考虑:

PRINT "256x192"

输出256x192。Spectrum具有固定的有线屏幕分辨率。


...并对诸如PRINT之类的关键字使用单个字节。
詹斯

2

处理中,51字节

void setup(){fullScreen();print(width+"x"+height);}

输出格式为:width height。此外,该程序还会创建一个与您正在使用的屏幕大小相同的窗口(因为每个处理程序默认都会创建一个窗口),并且该程序只会输出此窗口/草图的高度和宽度。


哦,格式是WIDTHxHEIGHT
马修·卢

@SIGSEGV刚注意到它
Kritixi Lithos'5

2

xdpyinfo+ awk,28个字节

$ xdpyinfo|awk /dim/{print\$2}
3360x1050

经过双头Cygwin测试。


1
xdpyinfo|awk /dim/{print\$2}需要28个字节而不是24个字节
Pandya'5

@Pandya我需要新眼镜:-)
Jens


1

Lithp,116字节

((import html-toolkit)
(htmlOnLoad #::((var S(index(getWindow)screen))
(print(+(index S width)"x"(index S height))))))

(添加了换行符以提高可读性)

在线尝试!

最后,我的html-toolkit模块得到了一些使用!仅可在“在线试用”链接中使用,而不能从命令行使用。

如果1024 x 768可能是有效输出,则可以保存一些字节。我们只是(+ .. "x" .. )用来避免print的隐式间距。


嗯 我在网上尝试过,但它说2048x1080的是真正的4K屏幕4096x2160。知道为什么吗?FreeBSD 11上的Firefox 52.0。–
Jens

不知道。我只是从中window.screen获取widthheight属性。我想如果您打开Firefox控制台并输入,window.screen就会看到明显的错误2048x1080
Andrakis'5

1

Lua(高级框架),116字节

f,g=love.window.setFullscreen,love.graphics function love.draw()f(1)w,h=g.getDimensions()f(0>1)g.print(w.."x"..h)end

程序首先更改为全屏,然后获取宽度和高度并打印:)


1

xrandr和sh,23个字节

$ set `xrandr`;echo $6x$8
3360x1050

在CentOS 5盒子上进行了测试,显示器重定向到带有两个显示器的Cygwin机器。这里的完整xrandr输出是

$ xrandr
 SZ:    Pixels          Physical       Refresh
*0   3360 x 1050   ( 889mm x 278mm )  *0
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none

1

Ruby + xrandr,37个字节

puts `xrandr`.split[7..9].join[0..-2]

替代解决方案(52字节):

puts `xrandr`.match(/t (\d+) (x) (\d+),/)[1..3].join

1

红色,26字节

system/view/screens/1/size

输出例如:

1920x1080

该代码很容易解释。该1指第一屏

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.