Flutter ట్యుటోరియల్: Canvas చిత్రంగా మార్చండి

లో, మీరు తరగతి నుండి పద్ధతిని ఉపయోగించి a చిత్రంగా Flutter మార్చవచ్చు. కస్టమ్ విడ్జెట్‌లో లేదా విడ్జెట్ యొక్క పెయింటింగ్ దశలో గ్రాఫిక్స్ మరియు ఆకృతులను గీయడానికి తరగతి మిమ్మల్ని అనుమతిస్తుంది. మీరు అన్నింటినీ గీసిన తర్వాత, మీరు దానిని పద్ధతిని ఉపయోగించి చిత్రంగా మార్చవచ్చు. Canvas toImage() ui.Image Canvas CustomPainter canvas toImage()

Canvas ఒక చిత్రాన్ని ఎలా మార్చాలనే దానిపై దశల వారీ గైడ్ ఇక్కడ ఉంది Flutter:

అవసరమైన ప్యాకేజీలను దిగుమతి చేయండి

import 'package:flutter/material.dart';  
import 'dart:ui' as ui;  

కస్టమ్ విడ్జెట్ లేదా CustomPainter మీరు ఎక్కడ గీస్తారో సృష్టించండి canvas

class MyCanvasWidget extends StatelessWidget {  
  @override  
  Widget build(BuildContext context) {  
    return CustomPaint(  
      size: Size(200, 200), // Set the size of the canvas  
      painter: MyCanvasPainter(),  
   );  
  }  
}  
  
class MyCanvasPainter extends CustomPainter {  
  @override  
  void paint(Canvas canvas, Size size) {  
    // Draw on the canvas here  
    // For example, draw a red circle at the center  
    final Paint paint = Paint()..color = Colors.red;  
    final double centerX = size.width / 2;  
    final double centerY = size.height / 2;  
    final double radius = 50.0;  
    canvas.drawCircle(Offset(centerX, centerY), radius, paint);  
  }  
  
  @override  
  bool shouldRepaint(CustomPainter oldDelegate) {  
    return false;  
  }  
}  

canvas చిత్రంగా మార్చడానికి ఒక ఫంక్షన్‌ను సృష్టించండి

Future<ui.Image> captureCanvasToImage() async {  
  final pictureRecorder = ui.PictureRecorder();  
  final canvas = Canvas(pictureRecorder);  
  
  // Create the custom widget or draw on the canvas using a CustomPainter  
  final widget = MyCanvasWidget();  
  widget.paint(canvas, Size(200, 200)); // Set the size of the canvas to match the custom widget size  
  
  final recordedPicture = pictureRecorder.endRecording();  
  return await recordedPicture.toImage(200, 200); // Set the image size, should match the canvas size  
}  

ఫంక్షన్‌కు కాల్ చేయండి captureCanvasToImage() మరియు చిత్రాన్ని నిర్వహించండి

void _convertCanvasToImage() async {  
  ui.Image image = await captureCanvasToImage();  
  // Use the image here as needed, such as displaying it in an `Image` widget or saving it to a file  
}  

ఈ ఉదాహరణలో, మేము ఒక కస్టమ్ విడ్జెట్‌ని సృష్టించాము MyCanvasWidget, ఇది మధ్యలో ఎరుపు వృత్తాన్ని గీస్తుంది canvas. ఫంక్షన్ captureCanvasToImage() ఒక సృష్టిస్తుంది Canvas, కస్టమ్ విడ్జెట్ ఉపయోగించి దానిపై డ్రా చేస్తుంది లేదా CustomPainter, ఆపై దానిని ఒక గా మారుస్తుంది ui.Image.

canvas కస్టమ్ విడ్జెట్() రెండింటిలోనూ పరిమాణం సెట్ చేయబడాలని MyCanvasWidget మరియు toImage() డ్రాయింగ్ మరియు ఇమేజ్ సరైన పరిమాణాలను కలిగి ఉండేలా చూసుకునే పద్ధతిని గమనించండి. ఈ ఉదాహరణలో, మేము canvas పరిమాణాన్ని 200x200కి సెట్ చేసాము, కానీ మీరు దానిని మీకు కావలసిన కొలతలకు సర్దుబాటు చేయవచ్చు.

ఫ్యూచర్‌లు మరియు అసమకాలిక ఫంక్షన్‌లతో పని చేస్తున్నప్పుడు లోపాలను నిర్వహించడానికి మరియు అసమకాలిక ఆపరేషన్‌ల కోసం సరిగ్గా వేచి ఉండాలని గుర్తుంచుకోండి. _convertCanvasToImage() అలాగే, చిత్రాన్ని సంగ్రహించడానికి మరియు పొందేందుకు తగిన సమయంలో కాల్ చేయాలని నిర్ధారించుకోండి canvas.