Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 颤振:使用imagePicker的极低分辨率图像_Android_Image_Flutter - Fatal编程技术网

Android 颤振:使用imagePicker的极低分辨率图像

Android 颤振:使用imagePicker的极低分辨率图像,android,image,flutter,Android,Image,Flutter,我正在使用图像选择器从用户手机中拾取图像,但一旦拾取图像,它的分辨率就会非常低 有什么办法可以解决这个问题吗?我想用质量更好的图片,但我想不出来!这是显示图像和使用图像选择器的代码: import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'dart:io'; import 'package:uni_markt/models/product.dart'; c

我正在使用图像选择器从用户手机中拾取图像,但一旦拾取图像,它的分辨率就会非常低

有什么办法可以解决这个问题吗?我想用质量更好的图片,但我想不出来!这是显示图像和使用图像选择器的代码:

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:io';
import 'package:uni_markt/models/product.dart';

class ImageInput extends StatefulWidget {
 final Function setImage;
 final Product product;

ImageInput(this.setImage, this.product);

  @override
  State<StatefulWidget> createState() {
    return _ImageInputState();
  }
}

 class _ImageInputState extends State<ImageInput> {
 File _imageFile;

 void _getImage(BuildContext context, ImageSource source) {
 ImagePicker.pickImage(source: source, maxWidth: 400).then((File image) {
  setState(() {
    _imageFile = image;
  });
  widget.setImage(image);
  Navigator.pop(context);
});
}

  void _openImagePicker(BuildContext context) {
showModalBottomSheet(
  context: context,
  builder: (BuildContext context) {
    return Container(
      height: 150,
      padding: EdgeInsets.all(10),
      child: Column(
        children: <Widget>[
          Text(
            'Pick an Image source',
            style: TextStyle(fontWeight: FontWeight.bold),
          ),
          SizedBox(
            height: 10,
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              FlatButton(
                textColor: Theme.of(context).primaryColor,
                child: Icon(
                  Icons.art_track,
                  size: 90,
                ),
                onPressed: () {
                  _getImage(context, ImageSource.gallery);
                },
              ),
              SizedBox(
                width: 20,
              ),
              FlatButton(
                textColor: Theme.of(context).primaryColor,
                child: Icon(
                      Icons.camera_alt,
                      size: 70,
                    ),
                    onPressed: () {
                      _getImage(context, ImageSource.camera);
                  },
                ),
              ],
            ),
           ],
         ),
       );
      },
    );
  }

 @override
 Widget build(BuildContext context) {
final Color color = Theme.of(context).primaryColor;

Widget previewImage = Text('Please select an image');
if (_imageFile != null) {
  previewImage = Image.file(_imageFile,
      fit: BoxFit.cover,
      height: 300,
      alignment: Alignment.center,
      width: MediaQuery.of(context).size.width);
} else if (widget.product != null) {
  previewImage = Image.network(widget.product.image,
      fit: BoxFit.cover,
      height: 300,
      alignment: Alignment.center,
      width: MediaQuery.of(context).size.width);
}

return Column(
  children: <Widget>[
    OutlineButton(
      borderSide: BorderSide(color: color, width: 3),
      onPressed: () {
        _openImagePicker(context);
      },
      child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Icon(
            Icons.camera_alt,
            color: color,
          ),
          SizedBox(
            width: 5,
          ),
          Text(
            'Add Image',
            style: TextStyle(
              color: color,
            ),
          ),
        ],
      ),
    ),
    SizedBox(
      height: 10,
    ),
    previewImage,

  ],
);
导入“包装:颤振/材料.省道”;
导入“包:image_picker/image_picker.dart”;
导入“dart:io”;
进口“包装:uni_markt/models/product.dart”;
类ImageInput扩展StatefulWidget{
最终函数setImage;
最终产品;
ImageInput(this.setImage,this.product);
@凌驾
状态createState(){
返回_ImageInputState();
}
}
类_ImageInputState扩展状态{
文件imageFile;
void\u getImage(BuildContext上下文,ImageSource源){
pickImage(源代码:source,maxWidth:400)。然后((文件图像){
设置状态(){
_图像文件=图像;
});
setImage(image);
Navigator.pop(上下文);
});
}
void\u openImagePicker(构建上下文){
showModalBottomSheet(
上下文:上下文,
生成器:(BuildContext上下文){
返回容器(
身高:150,
填充:边缘设置。全部(10),
子:列(
儿童:[
正文(
“选择图像源”,
样式:TextStyle(fontWeight:fontWeight.bold),
),
大小盒子(
身高:10,
),
划船(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
扁平按钮(
textColor:Theme.of(context.primaryColor),
子:图标(
Icons.art_曲目,
尺码:90,
),
已按下:(){
_getImage(上下文,ImageSource.gallery);
},
),
大小盒子(
宽度:20,
),
扁平按钮(
textColor:Theme.of(context.primaryColor),
子:图标(
Icons.camera\u alt,
尺码:70,
),
已按下:(){
_getImage(上下文,ImageSource.camera);
},
),
],
),
],
),
);
},
);
}
@凌驾
小部件构建(构建上下文){
最终颜色=主题.of(上下文).primaryColor;
Widget previewImage=Text('请选择图像');
如果(_imageFile!=null){
previewImage=Image.file(_imageFile,
适合:BoxFit.cover,
身高:300,
对齐:对齐.center,
宽度:MediaQuery.of(context.size.width);
}else if(widget.product!=null){
previewImage=Image.network(widget.product.Image,
适合:BoxFit.cover,
身高:300,
对齐:对齐.center,
宽度:MediaQuery.of(context.size.width);
}
返回列(
儿童:[
大纲按钮(
borderSide:borderSide(颜色:颜色,宽度:3),
已按下:(){
_openImagePicker(上下文);
},
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
图标(
Icons.camera\u alt,
颜色:颜色,
),
大小盒子(
宽度:5,
),
正文(
“添加图像”,
样式:TextStyle(
颜色:颜色,
),
),
],
),
),
大小盒子(
身高:10,
),
预演,
],
);

我想我忽略了一些东西,但我想知道什么。有人能帮我解决这个问题吗?

当你调用ImagePicker.pickImage时,你指定的最大宽度为400。如果原始图像的分辨率更高(就像你的情况一样),picker将缩小其大小,使其宽度为400。简单地说,删除maxWidth参数将为您提供具有原始分辨率的图像。当您调用ImagePicker.pickImage时,您将最大宽度指定为400。如果原始图像的分辨率更高(与您的情况相同),选取器将缩小它的大小,使其宽度为400。简单地说,删除maxWidth参数将使您的图像具有原始分辨率。