implemented making a pdf from DetailPage.dart and croping image to 1:1 format

This commit is contained in:
2023-05-11 16:57:17 +02:00
parent 7c48542920
commit 423aae59b1
4 changed files with 166 additions and 3 deletions
+26 -1
View File
@@ -1,8 +1,10 @@
import 'dart:io';
import 'dart:math';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:image/image.dart' as img;
class AddScreen extends StatefulWidget {
@@ -35,6 +37,27 @@ class _AddScreenState extends State<AddScreen> {
return fileSize <= maxSizeInBytes;
}
Future<File> _cropImage(File imageFile) async {
final originalImage = img.decodeImage(await imageFile.readAsBytes());
if (originalImage != null) {
int originSize = min(originalImage.width, originalImage.height);
final croppedImage = img.copyCrop(
originalImage,
x: (originalImage.width - originSize)~/2,
y: (originalImage.height - originSize)~/2,
width: originSize,
height: originSize
);
final newPath = imageFile.path.substring(0, imageFile.path.lastIndexOf('/'));
final newFile = File('$newPath/cropped.jpg');
await newFile.writeAsBytes(img.encodePng(croppedImage));
return newFile;
} else {
throw Exception('Unable to decode image file.');
}
}
Future<void> _getImage(ImageSource source) async {
final pickedFile = await ImagePicker().pickImage(source: source);
@@ -42,8 +65,9 @@ class _AddScreenState extends State<AddScreen> {
final tempFile = File(pickedFile.path);
final bool isValid = await isFileSizeValid(tempFile, 10);
if (isValid) {
File croppedFile = await _cropImage(tempFile); // Bild zuschneiden
setState(() {
_imageFile = tempFile;
_imageFile = croppedFile;
});
} else {
ScaffoldMessenger.of(context).showSnackBar(
@@ -53,6 +77,7 @@ class _AddScreenState extends State<AddScreen> {
}
}
Future<void> addNewElementToFirestore(String title, String description, File imageFile, {required Function(bool) onComplete}) async {
String collectionName;
if (_selectedIndex == 0) {