flutter 截图获取设备像素比

手机截图功能,第一个写pixelRatio比例为1,发现截图很模糊,仔细查阅,才发现需要获取当前像素比

 try {
        RenderRepaintBoundary boundary =
            rootWidgetKey.currentContext.findRenderObject();
        var dpr = window.devicePixelRatio;
        var image = await boundary.toImage(pixelRatio: dpr);
        ByteData byteData = await image.toByteData(format: ImageByteFormat.png);
        Uint8List pngBytes = byteData.buffer.asUint8List();
        final result = await ImageGallerySaver.saveImage(pngBytes);
        BotToast.showText(
            text: ObjectUtil.isEmpty(result) ? '保存失败,请稍后再试' : '保存相册成功');
      } catch (e) {
        print(e);
      }


更多详解:
喜欢可以加Q群号:913934649,点赞,评论;

简书: https://www.jianshu.com/u/88db5f15770d

csdn:https://me.youkuaiyun.com/beyondforme

掘金:https://juejin.im/user/5e09a9e86fb9a016271294a7

不同的开发环境和编程语言获取当前设备像素的方法不同,以下是几种常见场景的获取方式: ### Flutter 环境 在 Flutter 中可以使用 `window.devicePixelRatio` 来获取设备像素比,结合 `MediaQuery` 获取物理像素尺寸。示例代码如下: ```dart import 'dart:ui'; import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { // 获取设备像素比 double dpr = window.devicePixelRatio; // 获取逻辑像素尺寸 Size logicalSize = window.physicalSize / dpr; // 计算物理像素尺寸 Size physicalSize = window.physicalSize; print('设备像素比: $dpr'); print('逻辑像素尺寸: $logicalSize'); print('物理像素尺寸: $physicalSize'); return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('获取设备像素信息'), ), body: Center( child: Text('查看控制台输出的设备像素信息'), ), ), ); } } ``` ### Qt 环境 在 Qt 中,可以使用 `QGuiApplication::screens()` 方法获取屏幕信息,进而获取设备像素相关内容。示例代码如下: ```cpp #include <QApplication> #include <QGuiApplication> #include <QScreen> #include <QDebug> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 获取当前屏幕 QScreen *screen = QGuiApplication::primaryScreen(); // 获取物理像素尺寸 QSize physicalSize = screen->physicalSize(); // 获取设备像素比 qreal devicePixelRatio = screen->devicePixelRatio(); qDebug() << "物理像素尺寸: " << physicalSize; qDebug() << "设备像素比: " << devicePixelRatio; return a.exec(); } ``` ### 网页(JavaScript)环境 在网页中,可以使用 `window.devicePixelRatio` 获取设备像素比,结合 `window.screen` 获取屏幕相关信息。示例代码如下: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>获取设备像素信息</title> </head> <body> <script> // 获取设备像素比 const dpr = window.devicePixelRatio; // 获取屏幕宽度(逻辑像素) const screenWidth = window.screen.width; // 获取屏幕高度(逻辑像素) const screenHeight = window.screen.height; // 计算物理像素宽度 const physicalWidth = screenWidth * dpr; // 计算物理像素高度 const physicalHeight = screenHeight * dpr; console.log('设备像素比: ', dpr); console.log('逻辑像素宽度: ', screenWidth); console.log('逻辑像素高度: ', screenHeight); console.log('物理像素宽度: ', physicalWidth); console.log('物理像素高度: ', physicalHeight); </script> </body> </html> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值