রেটিনা ডিসপ্লেতে মানের ক্ষতি না করে কীভাবে ইউআইভিউ থেকে ইউআইআইভিজে ক্যাপচার করবেন


303

আমার কোডটি স্বাভাবিক ডিভাইসগুলির জন্য সূক্ষ্মভাবে কাজ করে তবে রেটিনা ডিভাইসে অস্পষ্ট চিত্র তৈরি করে।

আমার সমস্যার সমাধান কি কেউ জানেন?

+ (UIImage *) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContext(view.bounds.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;
}

ঝাপসা। আমার কাছে মনে হচ্ছে সঠিক স্কেলটি হারিয়ে গেছে ...
ড্যানিয়েল

আমিও. একই ইস্যু পূরণ।
রেইনকাস্ট

আপনি ফলাফলের চিত্রটি কোথায় প্রদর্শন করছেন? অন্যরা যেমন ব্যাখ্যা করেছে, আমি বিশ্বাস করি যে আপনি কোনও চিত্রকে স্কেল 1 এর সাথে প্রতিস্থাপন করছেন, যখন আপনার ডিভাইসটিতে স্কেল 2 বা 3 রয়েছে। সুতরাং আপনি নিম্ন রেজোলিউশনে নেমে যাচ্ছেন। এটি মানের ক্ষতি হলেও অস্পষ্ট হওয়া উচিত নয়। আপনি যখন স্কেল 2 সহ কোনও ডিভাইসে এই চিত্রটি আবার দেখছেন (একই স্ক্রিনে?) তখন স্ক্রিনশটে প্রতি পিক্সেল 2 পিক্সেল ব্যবহার করে এটি নিম্ন রেজোলিউশন থেকে উচ্চতর রূপান্তরিত হবে। এই আপসেলিংটি সম্ভবত অতিরিক্ত পিক্সেলের জন্য রঙের মানগুলির গড় ব্যবহার করে (আইওএস-এ ডিফল্ট) ইন্টারপোলেশন ব্যবহার করে।
হ্যানস তেরজে বাক্কে

উত্তর:


667

ব্যবহার থেকে স্যুইচ UIGraphicsBeginImageContextকরতে UIGraphicsBeginImageContextWithOptions(যেমন নথিভুক্ত এই পৃষ্ঠাতে )। স্কেল (তৃতীয় যুক্তি) এর জন্য 0.0 পাস করুন এবং আপনি স্ক্রিনের সমান স্কেল ফ্যাক্টর সহ একটি প্রসঙ্গ পাবেন।

UIGraphicsBeginImageContext1.0 এর একটি স্থির স্কেল ফ্যাক্টর ব্যবহার করে, তাই আপনি অন্যান্য আইফোনের মতো আইফোন 4-তে ঠিক একই চিত্র পাচ্ছেন। আমি বাজি ধরব যে আপনি আইফোন 4 ফিল্টার প্রয়োগ করছেন যখন আপনি স্পষ্টভাবে এটি স্কেল করবেন বা আপনার মস্তিষ্ক তার চারপাশের সমস্ত কিছু থেকে কম তীক্ষ্ণ হয়ে উঠছে।

তাই আমি অনুমান করি:

#import <QuartzCore/QuartzCore.h>

+ (UIImage *)imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;
}

এবং সুইফ্ট 4 এ:

func image(with view: UIView) -> UIImage? {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
    defer { UIGraphicsEndImageContext() }
    if let context = UIGraphicsGetCurrentContext() {
        view.layer.render(in: context)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        return image
    }
    return nil
}

6
টমি উত্তর ঠিক আছে, কিন্তু সতর্কতা #import <QuartzCore/QuartzCore.h>অপসারণ করতে আপনার এখনও আমদানি করতে হবে renderInContext:
gwdp

2
@ ওয়াইনলিউ আপনি স্পষ্টভাবে 2.0 এর স্কেল ফ্যাক্টর নির্দিষ্ট করতে পারবেন তবে আপনি সম্ভবত একটি আইফোন 4 মানের চিত্র পাবেন না কারণ লোড হওয়া কোনও বিটম্যাপগুলি @ 2x সংস্করণগুলির পরিবর্তে মানক সংস্করণ হবে। আমি মনে করি না যে এর সমাধানের সমাধান নেই কারণ বর্তমানে UIImageপুনরায় লোড করার জন্য উচ্চতর রেজোলিউশন সংস্করণটি চাপিয়ে রাখা প্রত্যেককে নির্দেশ দেওয়ার কোনও উপায় নেই (এবং আপনি সম্ভবত প্রাকের চেয়ে কম র‌্যামের কারণে সমস্যার বিরুদ্ধে লড়াই চালিয়ে যাবেন -রেটিনা ডিভাইসগুলি যাইহোক)।
টমি

6
0.0fস্কেল প্যারামিটারের জন্য ব্যবহার করার পরিবর্তে এটি কি আরও বেশি গ্রহণযোগ্য তা ব্যবহার [[UIScreen mainScreen] scale]করে।
অ্যাডাম কার্টার

20
@ অ্যাডাম কার্টার scale: The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.এটি স্পষ্টভাবে নথিবদ্ধ, সুতরাং 0.0f আমার মতে সহজ এবং ভাল।
cprcrack

5
এই উত্তরটি আইওএস-এর জন্য পুরানো .. এটি করার জন্য নতুন "সেরা" পদ্ধতির জন্য আমার উত্তরটি দেখুন।
দিমা

224

বর্তমানে গৃহীত উত্তরগুলি এখন পুরানো, কমপক্ষে যদি আপনি আইওএস 7 সমর্থন করে থাকেন।

আপনি যদি কেবল iOS7 + সমর্থন করেন তবে আপনার ব্যবহার করা উচিত তা এখানে:

+ (UIImage *) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0f);
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
    UIImage * snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return snapshotImage;
}

সুইফট 4:

func imageWithView(view: UIView) -> UIImage? {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
    defer { UIGraphicsEndImageContext() }
    view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
    return UIGraphicsGetImageFromCurrentImageContext()
}

অনুযায়ী এই নিবন্ধটি , আপনি দেখতে পারেন যে নতুন সহ iOS7 পদ্ধতি drawViewHierarchyInRect:afterScreenUpdates:চেয়ে অনেক গুণ বেশি দ্রুত renderInContext:মাপকাঠি


5
সন্দেহ নেই, এটি drawViewHierarchyInRect:afterScreenUpdates:অনেক দ্রুত is আমি কেবল ইনস্ট্রুমেন্টে একটি টাইম প্রোফাইলার চালিয়েছি। আমার চিত্রের প্রজন্ম 138 মিমি থেকে শুরু করে 27 মিনিটে গিয়েছে।
টমাসকল

9
আমি যখন Google মানচিত্র চিহ্নিতকারীদের জন্য কাস্টম আইকন তৈরি করার চেষ্টা করছিলাম তখন কোনও কারণে এটি আমার পক্ষে কার্যকর হয়নি; আমার যা কিছু পেয়েছিল তা কালো আয়তক্ষেত্রগুলি ছিল :(
জেকপি

6
@ কার্লোসপ আপনি কি সেট afterScreenUpdates:করার চেষ্টা করেছেন YES?
ডিমা

7
স্ক্রিন আপডেটস ইয়েস-এর পরে সেট করুন আমার জন্য কালো আয়তক্ষেত্রের সমস্যাটি স্থির করেছেন
হিউউউ

4
আমি কালো ছবিও পেয়ে যাচ্ছিলাম। দেখা গেল যে আমি কোডটি কল করি viewDidLoadবা viewWillAppear:ছবিগুলি কালো হলে; আমি এটি করতে ছিল viewDidAppear:। সুতরাং আমি অবশেষে ফিরে renderInContext:
মানিকেশার

32

আমি @ ডিমা সমাধানের ভিত্তিতে একটি সুইফট এক্সটেনশন তৈরি করেছি:

extension UIImage {
    class func imageWithView(view: UIView) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0)
        view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img
    }
}

সম্পাদনা: সুইফট 4 উন্নত সংস্করণ

extension UIImage {
    class func imageWithView(_ view: UIView) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0)
        defer { UIGraphicsEndImageContext() }
        view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
        return UIGraphicsGetImageFromCurrentImageContext() ?? UIImage()
    }
}

ব্যবহার:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))  
let image = UIImage.imageWithView(view)

2
ধারণার জন্য ধন্যবাদ! ঠিক একদিকে যেমন, আপনি প্রসঙ্গটি শুরু করার সাথে সাথে {UIGraphicsEndImageContext () er স্থগিত করতে পারেন এবং স্থানীয় পরিবর্তনশীল img প্রবর্তন করা এড়াতে পারেন;)
ডেনিস এল

ভালভাবে বিস্তারিত ব্যাখ্যা এবং ব্যবহারের জন্য আপনাকে অনেক ধন্যবাদ!
জিউস

কেন এটি এমন একটি classফাংশন যা একটি দর্শন নেয়?
রুডল্ফ আদমকোভিč

এটি কোনও staticফাংশনের মতো কাজ করে তবে ওভাররাইড করার কোনও প্রয়োজন নেই বলে আপনি কেবল এটিকে staticপরিবর্তে একটি ফানকে পরিবর্তন করতে পারেন class
হেবার্তি আলমেডা

25

আইওএস দ্রুতগতি

আধুনিক ইউআইজিগ্রাফিকস আইমেজ রেন্ডারার ব্যবহার করে

public extension UIView {
    @available(iOS 10.0, *)
    public func renderToImage(afterScreenUpdates: Bool = false) -> UIImage {
        let rendererFormat = UIGraphicsImageRendererFormat.default()
        rendererFormat.opaque = isOpaque
        let renderer = UIGraphicsImageRenderer(size: bounds.size, format: rendererFormat)

        let snapshotImage = renderer.image { _ in
            drawHierarchy(in: bounds, afterScreenUpdates: afterScreenUpdates)
        }
        return snapshotImage
    }
}

@ মাসালডানা 2 সম্ভবত এখনও না, তবে তারা স্টাফকে হ্রাস করা বা হার্ডওয়্যার ত্বরণযুক্ত রেন্ডারিং বা উন্নতিগুলি শুরু করার সাথে সাথে আপনি আরও দৈত্য কাঁধে থাকতে পারেন (শেষ অ্যাপল এপিআই ব্যবহার করে একেএ)
জুয়ান বোয়েরো

পারফরম্যান্সটি কি rendererপুরানো সাথে এটি তুলনা করছে তা সম্পর্কে কি কেউ সচেতন drawHierarchy..?
লাইভ

24

@ টমি এবং @ ডিমা দ্বারা উত্তরগুলি উন্নত করতে, স্বচ্ছ ব্যাকগ্রাউন্ড সহ এবং মানের ক্ষতি না করে ইউআইভিউজে ইউআইভিউ রেন্ডার করতে নিম্নলিখিত বিভাগটি ব্যবহার করুন । আইওএস 7 এ কাজ করছেন। (অথবা selfআপনার চিত্রের সাথে রেফারেন্সটি প্রতিস্থাপন করে প্রয়োগের ক্ষেত্রে কেবল সেই পদ্ধতিটি পুনরায় ব্যবহার করুন )

UIView + + RenderViewToImage.h

#import <UIKit/UIKit.h>

@interface UIView (RenderToImage)

- (UIImage *)imageByRenderingView;

@end

UIView + + RenderViewToImage.m

#import "UIView+RenderViewToImage.h"

@implementation UIView (RenderViewToImage)

- (UIImage *)imageByRenderingView
{
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0);
    [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
    UIImage * snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return snapshotImage;
}

@end

1
যদি আমি আফ্রিকার স্ক্রিন আপডেটের সাহায্যে চিত্র ভিউ হাইয়ারচিআইনরেক্ট ব্যবহার করি: হ্যাঁ আমার চিত্রের দিকের অনুপাত বদলেছে এবং চিত্রটি বিকৃত হয়ে যায়।
বিভক্ত

আপনার ইউভিউ সামগ্রীটি পরিবর্তিত হয়ে গেলে কি এটি ঘটবে? যদি হ্যাঁ হয় তবে এই ইউআইআইমেজটিকে আবার জেনারেট করার চেষ্টা করুন। দুঃখিত আমি নিজে এটি পরীক্ষা করতে পারছি না কারণ আমি ফোনে আছি
গ্লোগো

আমারও একই সমস্যা আছে এবং দেখে মনে হচ্ছে কেউ এটির নজরে নেই, আপনি কি এই সমস্যার কোনও সমাধান খুঁজে পেয়েছেন? @ কনফিলে?
রেজা.আব

এটি কেবল আমার প্রয়োজন তবে এটি কার্যকর হয়নি। আমি উপার্জন চেষ্টা @interfaceএবং @implementationউভয় (RenderViewToImage)এবং যোগ করার #import "UIView+RenderViewToImage.h"মধ্যে হেডার ViewController.hতাই এই সঠিক ব্যবহার হয়? যেমন UIImageView *test = [[UIImageView alloc] initWithImage:[self imageByRenderingView]]; [self addSubview:test];?
গ্রেগ

এবং এই পদ্ধতিটিতে ViewController.mআমি যে ভিউটি রেন্ডার করার চেষ্টা করেছি তা ছিল- (UIView *)testView { UIView *v1 = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)]; v1.backgroundColor = [UIColor redColor]; UIView *v2 = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 150, 150)]; v2.backgroundColor = [UIColor blueColor]; [v2 addSubview:v1]; return v2; }
গ্রেগ

15

সুইফট 3

সুইফট 3 সমাধান (উপর ভিত্তি করে দিমা এর উত্তর ) UIView এক্সটেনশানের সঙ্গে ভালো হওয়া উচিত:

extension UIView {
    public func getSnapshotImage() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.isOpaque, 0)
        self.drawHierarchy(in: self.bounds, afterScreenUpdates: false)
        let snapshotImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return snapshotImage
    }
}

6

ড্রপ-ইন সুইফট 3.0 এক্সটেনশান যা নতুন আইওএস 10.0 এপিআই এবং পূর্ববর্তী পদ্ধতিটিকে সমর্থন করে।

বিঃদ্রঃ:

  • আইওএস সংস্করণ পরীক্ষা
  • প্রসঙ্গটি পরিষ্কার করার জন্য ডিফার ব্যবহারটি নোট করুন।
  • এছাড়াও দৃষ্টিভঙ্গিটির অস্বচ্ছতা এবং বর্তমান স্কেল প্রয়োগ করবে।
  • কিছুই ব্যবহার করে কেবল আবদ্ধ নয় !যা ক্রাশের কারণ হতে পারে।

extension UIView
{
    public func renderToImage(afterScreenUpdates: Bool = false) -> UIImage?
    {
        if #available(iOS 10.0, *)
        {
            let rendererFormat = UIGraphicsImageRendererFormat.default()
            rendererFormat.scale = self.layer.contentsScale
            rendererFormat.opaque = self.isOpaque
            let renderer = UIGraphicsImageRenderer(size: self.bounds.size, format: rendererFormat)

            return
                renderer.image
                {
                    _ in

                    self.drawHierarchy(in: self.bounds, afterScreenUpdates: afterScreenUpdates)
                }
        }
        else
        {
            UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.isOpaque, self.layer.contentsScale)
            defer
            {
                UIGraphicsEndImageContext()
            }

            self.drawHierarchy(in: self.bounds, afterScreenUpdates: afterScreenUpdates)

            return UIGraphicsGetImageFromCurrentImageContext()
        }
    }
}

5

সুইফট ২.০:

এক্সটেনশন পদ্ধতি ব্যবহার করে:

extension UIImage{

   class func renderUIViewToImage(viewToBeRendered:UIView?) -> UIImage
   {
       UIGraphicsBeginImageContextWithOptions((viewToBeRendered?.bounds.size)!, false, 0.0)
       viewToBeRendered!.drawViewHierarchyInRect(viewToBeRendered!.bounds, afterScreenUpdates: true)
       viewToBeRendered!.layer.renderInContext(UIGraphicsGetCurrentContext()!)

       let finalImage = UIGraphicsGetImageFromCurrentImageContext()
       UIGraphicsEndImageContext()

       return finalImage
   }

}

ব্যবহার:

override func viewDidLoad() {
    super.viewDidLoad()

    //Sample View To Self.view
    let sampleView = UIView(frame: CGRectMake(100,100,200,200))
    sampleView.backgroundColor =  UIColor(patternImage: UIImage(named: "ic_120x120")!)
    self.view.addSubview(sampleView)    

    //ImageView With Image
    let sampleImageView = UIImageView(frame: CGRectMake(100,400,200,200))

    //sampleView is rendered to sampleImage
    var sampleImage = UIImage.renderUIViewToImage(sampleView)

    sampleImageView.image = sampleImage
    self.view.addSubview(sampleImageView)

 }

3

সুইফট 3.0 বাস্তবায়ন

extension UIView {
    func getSnapshotImage() -> UIImage {
        UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0)
        drawHierarchy(in: bounds, afterScreenUpdates: false)
        let snapshotImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return snapshotImage
    }
}

3

সমস্ত সুইফট 3 টি উত্তর আমার পক্ষে কাজ করেনি তাই আমি সর্বাধিক গৃহীত উত্তরটি অনুবাদ করেছি:

extension UIImage {
    class func imageWithView(view: UIView) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
        view.layer.render(in: UIGraphicsGetCurrentContext()!)
        let img: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img!
    }
}

2

@ ডিমা থেকে উত্তরের ভিত্তিতে এখানে একটি সুইফট 4 ইউআইভিউ এক্সটেনশন

extension UIView {
   func snapshotImage() -> UIImage? {
       UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0)
       drawHierarchy(in: bounds, afterScreenUpdates: false)
       let image = UIGraphicsGetImageFromCurrentImageContext()
       UIGraphicsEndImageContext()
       return image
   }
}

2

সুইফ্ট 5.1 এর জন্য আপনি এই এক্সটেনশনটি ব্যবহার করতে পারেন:

extension UIView {

    func asImage() -> UIImage {
        let renderer = UIGraphicsImageRenderer(bounds: bounds)

        return renderer.image {
            rendererContext in

            layer.render(in: rendererContext.cgContext)
        }
    }
}

1

UIGraphicsImageRendererএকটি অপেক্ষাকৃত নতুন এপিআই, আইওএস 10. আপনি চালু একটি UIGraphicsImageRenderer গঠন করা হয় একটি বিন্দু আকার নির্দিষ্ট করে । চিত্র পদ্ধতিটি একটি ক্লোজার আর্গুমেন্ট নেয় এবং একটি বিটম্যাপ দেয় যা উত্তীর্ণ বন্ধটি কার্যকর করে ফলাফল। এই ক্ষেত্রে, ফলাফলটি নির্দিষ্ট গণ্ডির মধ্যে অঙ্কনের জন্য মূল চিত্রটি ছোট করে দেওয়া হয়।

https://nshipster.com/image-resizing/

সুতরাং নিশ্চিত হয়ে নিন যে আপনি যে আকারে যাচ্ছেন UIGraphicsImageRendererসেটি হ'ল পিক্সেল নয় points

যদি আপনার চিত্রগুলি প্রত্যাশার চেয়ে বড় হয় তবে আপনার আকারকে স্কেল ফ্যাক্টর দ্বারা ভাগ করতে হবে।


আমি কৌতূহলী, আপনি কি আমাকে এই সাহায্য করতে পারেন দয়া করে? stackoverflow.com/questions/61247577/... আমি UIGraphicsImageRenderer ব্যবহার করছি, সমস্যা যে আমি রপ্তানি ইমেজ ডিভাইসে প্রকৃত দৃশ্য চেয়ে বড় আকার হতে চান হয়। তবে পছন্দসই আকারের সংক্ষিপ্তসারগুলি (লেবেলগুলি) যথেষ্ট তীক্ষ্ণ নয় - সুতরাং মানের ক্ষতি রয়েছে।
ওন্ডিজে করোল

0

কিছু সময় ড্রআরেক্ট পদ্ধতিটি সমস্যা তৈরি করে তাই আমি এই উত্তরগুলি আরও যথাযথ পেয়েছি। আপনারও এটির দৃষ্টি আকর্ষণ করতে পারে ড্রইরেক্ট পদ্ধতিতে আটকে থাকা ইউআইভিউয়ের ক্যাপচার করুন Capt


0
- (UIImage*)screenshotForView:(UIView *)view
{
    UIGraphicsBeginImageContext(view.bounds.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // hack, helps w/ our colors when blurring
    NSData *imageData = UIImageJPEGRepresentation(image, 1); // convert to jpeg
    image = [UIImage imageWithData:imageData];

    return image;
}

-2

এই পদ্ধতিতে কেবল একটি ভিউ অবজেক্ট পাস করুন এবং এটি একটি ইউআইআইমেজ অবজেক্টকে ফিরিয়ে দেবে।

-(UIImage*)getUIImageFromView:(UIView*)yourView
{
 UIGraphicsBeginImageContext(yourView.bounds.size);
 [yourView.layer renderInContext:UIGraphicsGetCurrentContext()];
 UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();
 return image;
}

-6

এটিকে ইউআইভিউ বিভাগে পদ্ধতিতে যুক্ত করুন

- (UIImage*) capture {
    UIGraphicsBeginImageContext(self.bounds.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.layer renderInContext:context];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

2
হিয়া সেখানে, যদিও এই প্রশ্নের উত্তরের উত্তর দিতে পারে, দয়া করে সচেতন হন যে অন্য ব্যবহারকারীরা আপনার মতো জ্ঞানী নাও হতে পারেন। কেন আপনি এই কোডটি কাজ করে তার একটি সামান্য ব্যাখ্যা যুক্ত করবেন না? ধন্যবাদ!
ভোগেল 612
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.