抖动:使用imagePicker的高分辨率图像

时间:2019-07-04 16:47:52

标签: android image flutter

我使用image_picker从用户手机中拾取图像,但是一旦拾取图像,它将显示非常低的分辨率。

very pixelated and lowres image

有什么办法可以解决?我想使用更高质量的图片,但我无法弄清楚!这是显示图像并使用图像选择器的代码:

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,

  ],
);

我认为我忽略了某些东西,但是却忘了什么。有人可以帮忙解决这个问题吗?

0 个答案:

没有答案