Comment obtenir l'écran DPI /linux,mac/ Logiciel?

J'ai besoin de connaître l'écran actif DPI sur le Linux et Mac OS. Je pense sur linux xlib peut être utile, mais je ne trouve pas un moyen d'obtenir currect DPI.
Je veux que ces informations reçoivent la taille réelle de l'écran en pouces.

Merci d'avance!
Invité:

Alice

Confirmation de:

Sur le mac Utilisation CGDisplayScreenSize, Pour obtenir la taille de l'écran en millimètres.

Eugene

Confirmation de:

À X sur le Linux Appel
XOpenDisplay//

, Obtenir
Display

, Puis utiliser
DisplayWidthMM//

et
DisplayHeightMM//

ensemble avec
DisplayWidth//

et
DisplayHeight//

Pour calcul DPI.

Sur le Mac Presque probablement il y a plus de natif API pour une utilisation que X. Mac OS X Par défaut ne démarre pas X Window, Il a son propre environnement de fenêtre.

Christian

Confirmation de:

Je l'ai rassemblé de xdpyinfo...
Compilation avec: gcc-Wall-o getdpi getdpi.c -lX11


/* Get dots per inch 
*/
static void get_dpi/int *x, int *y/
{
double xres, yres;
Display *dpy;
char *displayname = NULL;
int scr = 0; /* Screen number */

if/ /NULL == x/ || /NULL == y//{ return ; }

dpy = XOpenDisplay /displayname/;

/*
* there are 2.54 centimeters to an inch; so there are 25.4 millimeters.
*
* dpi = N pixels / /M millimeters / /25.4 millimeters / 1 inch//
* = N pixels / /M inch / 25.4/
* = N * 25.4 pixels / M inch
*/
xres = ////double/ DisplayWidth/dpy,scr// * 25.4/ /
//double/ DisplayWidthMM/dpy,scr///;
yres = ////double/ DisplayHeight/dpy,scr// * 25.4/ /
//double/ DisplayHeightMM/dpy,scr///;

*x = /int/ /xres + 0.5/;
*y = /int/ /yres + 0.5/;

XCloseDisplay /dpy/;
}

Camille

Confirmation de:

vous pouvez utiliser
NSScreen

, Pour obtenir les dimensions de l'affichage ci-joint/Ov/ en pixels, mais cela ne vous donnera pas une taille physique/PPI affichage, et en fait je ne pense pas qu'il n'y en ait aucun APIs, Qui sera capable de le faire de manière fiable.

Vous pouvez demander à la fenêtre de le résoudre comme suit:


NSDictionary* deviceDescription = [window deviceDescription];
NSSize resolution = [[deviceDescription objectForKey:NSDeviceResolution] sizeValue];


Actuellement ça va vous donner
NSSize

de
{72,72}

pour tous les écrans, quel que soit leur réalité PPI. La seule chose qui peut changer cette valeur est - Ce changement dans le coefficient d'échelle dans l'utilité Quartz Debug utility ou si Apple jamais activer resolution-independent UI. Vous pouvez obtenir le coefficient à grande échelle actuel en appelant:


[[NSScreen mainScreen] userSpaceScaleFactor];


Si vous avez vraiment besoin de connaître la résolution exacte /Je serais intéressé de savoir pourquoi vous le pensez/, Vous pouvez créer une procédure d'étalonnage de l'écran et demander à l'utilisateur de mesurer la ligne à l'écran à l'aide de la ligne physique réelle. Rugueux, oui, mais ça marchera.

Conrad

Confirmation de:

Voici un moyen indépendant d'obtenir un écran DPI:


// Written in Java
import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.EmptyBorder;

public final class DpiTest {

public static void main/String[] args/ {
JFrame frame = new JFrame/"DPI"/;
JLabel label = new JLabel/"Current Screen DPI: " + Toolkit.getDefaultToolkit//.getScreenResolution///;
label.setBorder/new EmptyBorder/20, 20, 20, 20//;
frame.add/label/;
frame.setDefaultCloseOperation/JFrame.EXIT_ON_CLOSE/;
frame.pack//;
frame.setVisible/true/;
}

}


Vous pouvez télécharger compilé jar de là
https://github.com/UprootLabs/ ... i.jar
. Après le téléchargement
java -jar dpi.jar

Te montrer DPI.

Pour répondre aux questions, connectez-vous ou registre