Flutter Dev نشر 7 يناير 2022 أرسل تقرير نشر 7 يناير 2022 تحيه طيبه للجميع استعمل المكتبة التأليه من فلاتر لتحميل الصور الى قاعدة البيانات المشكلة ان بعض الصور يصل حجمها الى 3MB https://pub.dev/packages/wechat_assets_picker المشكلة ان الشروحات لهذا المكتبة قليله في الانترنت لم اجد طريقة لتقليل جودة الصور حتى احصل على حجم اقل انا استعملها بشكل التالي: final List<AssetEntity> result = await AssetPicker.pickAssets(context, maxAssets: 4, pathThumbSize: 84, themeColor:CustomColors.ButtonAddImage, gridCount: 4, selectedAssets: assets, if (result != null) { setState(() { assets = List<AssetEntity>.from(result); }); ياليت اذا احد يعلم طريقة تقليل جودة الصور لتقليل الحجم يفيدنا بطريقة شكرا لكم 1 اقتباس
1 Sam Ahw نشر 7 يناير 2022 أرسل تقرير نشر 7 يناير 2022 أبسط طريقة هي باستخدام مكتبة image_picker، حيث تحتوي خاصية imageQuality وهي قيمة رقمية يمكنك تعديلها بشكل فوري: ImagePicker imagePicker = ImagePicker(); PickedFile compressedImage = await imagePicker.getImage( source: ImageSource.gallery, imageQuality: 75, ); أو يمكنك أيضاً كتابة حد أعظمي لأبعاد الصورة كي لا تتجاوزه بكتابة الخاصيتين maxWidth و maxHeight: PickedFile compressedImage = await imagePicker.getImage( source: ImageSource.gallery, maxHeight: 200, maxWidth: 200 ); ); وأيضاً يوجد حزمة من الأدوات ضمن مكتبة الصور في لغة البرمجة Dart والتي يمكنك استخدامها مع المكتبة path_provider لتحقيق ذلك، مثال: import 'package:image/image.dart' as Im; import 'package:path_provider/path_provider.dart'; import 'dart:math' as Math; void compressImage() async { File originialImage = await ImagePicker.pickImage(); final tempDir = await getTemporaryDirectory(); final path = tempDir.path; int randomTitle = new Math.Random().nextInt(10000); Im.Image image = Im.decodeImage(originialImage.readAsBytesSync()); Im.Image smallImage = Im.copyResize(image, 500); var compressedImage = new File('$path/new_$randomTitle.jpg')..writeAsBytesSync(Im.encodeJpg(image, quality: 85)); } حيث نقوم بضغط الصورة المطلوبة من خلال التابع copyResize وهنا وضعنا القيمة التجريبية 500. يمكنك الاطلاع على المزيد من التفاصيل والأدوات من توثيق المكتبة image_picker أو حزم التعامل مع الصور ضمن لغة dart. 1 اقتباس
1 بلال زيادة نشر 8 يناير 2022 أرسل تقرير نشر 8 يناير 2022 يمكنك استخدام حزمة flutter_image_compress يمكنك العثور عليها من هنا , تعمل هذه الحزمة على ضغط الصورة , وهناك توثيق كامل يمكنك قراءته للتعامل مع هذه المكتبة و هذه المكتبة تعمل على كلا النظامين ios / android ، ويمكنك تثبيت الحزمة في مشروعك من خلال فتح ملف pubspec.ymal من خلال الأمر التالي dependencies: flutter_image_compress: ^1.0.0-nullsafety ويمكنك استدعاء المكتبة في الملف الذي تعمل عليه من خلال import 'package:flutter_image_compress/flutter_image_compress.dart'; كذلك تزودك هذه الحزمة ببعض الخصائص للتعامل مع الصورة كخاصية الدوران ( rotate ) ، وخاصية autoCorrectionAngle و خاصية التحكم بجودة الصورة و خاصية العرض و الارتفاع الأقصى للصورة . 1 اقتباس
0 Flutter Dev نشر 9 يناير 2022 الكاتب أرسل تقرير نشر 9 يناير 2022 بتاريخ On 1/8/2022 at 02:51 قال Sam Ahw: أبسط طريقة هي باستخدام مكتبة image_picker، حيث تحتوي خاصية imageQuality وهي قيمة رقمية يمكنك تعديلها بشكل فوري: ImagePicker imagePicker = ImagePicker(); PickedFile compressedImage = await imagePicker.getImage( source: ImageSource.gallery, imageQuality: 75, ); أو يمكنك أيضاً كتابة حد أعظمي لأبعاد الصورة كي لا تتجاوزه بكتابة الخاصيتين maxWidth و maxHeight: PickedFile compressedImage = await imagePicker.getImage( source: ImageSource.gallery, maxHeight: 200, maxWidth: 200 ); ); وأيضاً يوجد حزمة من الأدوات ضمن مكتبة الصور في لغة البرمجة Dart والتي يمكنك استخدامها مع المكتبة path_provider لتحقيق ذلك، مثال: import 'package:image/image.dart' as Im; import 'package:path_provider/path_provider.dart'; import 'dart:math' as Math; void compressImage() async { File originialImage = await ImagePicker.pickImage(); final tempDir = await getTemporaryDirectory(); final path = tempDir.path; int randomTitle = new Math.Random().nextInt(10000); Im.Image image = Im.decodeImage(originialImage.readAsBytesSync()); Im.Image smallImage = Im.copyResize(image, 500); var compressedImage = new File('$path/new_$randomTitle.jpg')..writeAsBytesSync(Im.encodeJpg(image, quality: 85)); } حيث نقوم بضغط الصورة المطلوبة من خلال التابع copyResize وهنا وضعنا القيمة التجريبية 500. يمكنك الاطلاع على المزيد من التفاصيل والأدوات من توثيق المكتبة image_picker أو حزم التعامل مع الصور ضمن لغة dart. اهلا بك اخي الكريم شاكر لك ردك بنسبة الى الإجابة الأولى والثانية لا استطيع استعمال هذا المكتبة لنني استعمل المكتبة التاليه: https://pub.dev/packages/wechat_assets_picker اما الجواب الثالث قمت بمحاولة تطبيقه ولكن لم ينجح مع هذا المكتبة بتاريخ On 1/8/2022 at 16:09 قال بلال زيادة: يمكنك استخدام حزمة flutter_image_compress يمكنك العثور عليها من هنا , تعمل هذه الحزمة على ضغط الصورة , وهناك توثيق كامل يمكنك قراءته للتعامل مع هذه المكتبة و هذه المكتبة تعمل على كلا النظامين ios / android ، ويمكنك تثبيت الحزمة في مشروعك من خلال فتح ملف pubspec.ymal من خلال الأمر التالي dependencies: flutter_image_compress: ^1.0.0-nullsafety ويمكنك استدعاء المكتبة في الملف الذي تعمل عليه من خلال import 'package:flutter_image_compress/flutter_image_compress.dart'; كذلك تزودك هذه الحزمة ببعض الخصائص للتعامل مع الصورة كخاصية الدوران ( rotate ) ، وخاصية autoCorrectionAngle و خاصية التحكم بجودة الصورة و خاصية العرض و الارتفاع الأقصى للصورة . اهلا بك اخي الكريم شاكر لك ردك قمت بمحاولة استعمال هذا الحزمة مع الحزمة التي استعملها لجلب الصور ولكن لم تنجح لدي اقتباس
السؤال
Flutter Dev
تحيه طيبه للجميع
استعمل المكتبة التأليه من فلاتر لتحميل الصور الى قاعدة البيانات المشكلة ان بعض الصور يصل حجمها الى 3MB
https://pub.dev/packages/wechat_assets_picker
المشكلة ان الشروحات لهذا المكتبة قليله في الانترنت لم اجد طريقة لتقليل جودة الصور حتى احصل على حجم اقل
انا استعملها بشكل التالي:
ياليت اذا احد يعلم طريقة تقليل جودة الصور لتقليل الحجم يفيدنا بطريقة
شكرا لكم
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.