CodeIgniter এর ফাইল আপলোড এবং ম্যানেজমেন্ট

Web Development - কোডইগনাইটার (Codeigniter) -

CodeIgniter একটি শক্তিশালী ফাইল আপলোড লাইব্রেরি সরবরাহ করে, যা ফাইল আপলোড এবং ম্যানেজমেন্ট সহজ করে। এটি ইমেজ, ডকুমেন্ট, বা অন্য কোনো ফাইল সুরক্ষিতভাবে সার্ভারে সংরক্ষণ করার জন্য প্রয়োজনীয় সকল বৈশিষ্ট্য সরবরাহ করে।


CodeIgniter এ ফাইল আপলোডের ধাপ

ধাপ ১: Controller তৈরি

একটি Controller তৈরি করুন, যা ফাইল আপলোড পরিচালনা করবে।

namespace App\Controllers;

use CodeIgniter\Controller;

class FileUploadController extends Controller {
    public function index() {
        return view('file_upload');
    }

    public function upload() {
        $file = $this->request->getFile('userfile');

        if ($file->isValid() && !$file->hasMoved()) {
            // ফাইল সংরক্ষণ করা
            $file->move(WRITEPATH . 'uploads');

            // সফল বার্তা
            return "File uploaded successfully: " . $file->getName();
        } else {
            // ত্রুটি বার্তা
            return "Failed to upload file.";
        }
    }
}

ধাপ ২: View তৈরি

app/Views/file_upload.php নামে একটি View তৈরি করুন এবং একটি ফাইল আপলোড ফর্ম যোগ করুন।

<!DOCTYPE html>
<html>
<head>
    <title>File Upload</title>
</head>
<body>
    <h1>Upload a File</h1>
    <form action="<?= site_url('fileupload/upload'); ?>" method="post" enctype="multipart/form-data">
        <label for="userfile">Choose File:</label>
        <input type="file" name="userfile" id="userfile"><br><br>
        <button type="submit">Upload</button>
    </form>
</body>
</html>

ধাপ ৩: Routes কনফিগারেশন

app/Config/Routes.php ফাইলে Controller এর জন্য রাউট যোগ করুন।

$routes->get('fileupload', 'FileUploadController::index');
$routes->post('fileupload/upload', 'FileUploadController::upload');

আপলোড কাস্টমাইজেশন

CodeIgniter এ ফাইল আপলোড কাস্টমাইজ করার জন্য কিছু গুরুত্বপূর্ণ সেটিংস প্রদান করে।

১. নির্দিষ্ট ফাইল টাইপ নির্ধারণ

if ($file->isValid() && !$file->hasMoved()) {
    $validTypes = ['image/jpeg', 'image/png', 'application/pdf'];

    if (in_array($file->getMimeType(), $validTypes)) {
        $file->move(WRITEPATH . 'uploads');
        return "File uploaded successfully: " . $file->getName();
    } else {
        return "Invalid file type.";
    }
}

২. ফাইলের সর্বোচ্চ সাইজ নির্ধারণ

if ($file->isValid() && !$file->hasMoved()) {
    $maxSize = 2048; // 2 MB (KB তে)

    if ($file->getSize() <= $maxSize * 1024) {
        $file->move(WRITEPATH . 'uploads');
        return "File uploaded successfully.";
    } else {
        return "File size exceeds the limit.";
    }
}

৩. কাস্টম নামকরণ

if ($file->isValid() && !$file->hasMoved()) {
    $newName = $file->getRandomName();
    $file->move(WRITEPATH . 'uploads', $newName);
    return "File uploaded successfully with name: " . $newName;
}

আপলোড করা ফাইল ম্যানেজমেন্ট

ফাইলের লোকেশন

আপলোড করা ফাইলগুলো WRITEPATH এর মধ্যে সংরক্ষিত হয়, যা writable/uploads ফোল্ডারে থাকে।

আপলোড করা ফাইল চেক করা

$files = directory_map(WRITEPATH . 'uploads');
print_r($files);

ফাইল ডাউনলোড

return $this->response->download(WRITEPATH . 'uploads/' . $fileName, null);

ফাইল ডিলিট করা

unlink(WRITEPATH . 'uploads/' . $fileName);

Validation ব্যবহার

CodeIgniter এর Validation Library ব্যবহার করে ফাইল আপলোডের সময় ইনপুট যাচাই করা যায়।

Validation সেট করা

$validation = \Config\Services::validation();

$validation->setRules([
    'userfile' => [
        'label' => 'File',
        'rules' => 'uploaded[userfile]|mime_in[userfile,image/jpeg,image/png]|max_size[userfile,2048]'
    ]
]);

if (!$validation->withRequest($this->request)->run()) {
    return redirect()->back()->withInput()->with('errors', $validation->getErrors());
}

সেরা প্র্যাকটিস

  1. ফাইল টাইপ যাচাই করুন: নিশ্চিত করুন যে শুধুমাত্র নির্দিষ্ট ফাইল টাইপ আপলোড করা যাবে।
  2. ফাইল সাইজ সীমাবদ্ধ করুন: বড় ফাইলের কারণে সার্ভারে প্রভাব পড়তে পারে।
  3. কাস্টম নাম ব্যবহার করুন: ফাইল কনফ্লিক্ট এড়ানোর জন্য।
  4. ফাইলের লোকেশন সুরক্ষিত রাখুন: ফাইল সংরক্ষণের জন্য writable ফোল্ডার ব্যবহার করুন।

সারাংশ

CodeIgniter এ ফাইল আপলোড একটি সহজ এবং সুরক্ষিত প্রক্রিয়া। ফাইল আপলোড করতে Controller, View, এবং Routes সঠিকভাবে সেটআপ করুন। কাস্টম নাম, টাইপ যাচাই, এবং সাইজ সীমাবদ্ধতার মাধ্যমে ফাইল আপলোড ম্যানেজমেন্ট আরও কার্যকর এবং নিরাপদ করা যায়।

Content added By

File Uploading Class ব্যবহার

CodeIgniter এ File Uploading Class একটি শক্তিশালী টুল, যা ব্যবহারকারীদের ফাইল (যেমন ইমেজ, ডকুমেন্ট, ভিডিও) সার্ভারে আপলোড করার জন্য সহজ এবং সুরক্ষিত উপায় প্রদান করে। এটি ফাইলের সাইজ, টাইপ, এবং অন্যান্য প্যারামিটার যাচাই করার সুবিধা দেয়।


File Uploading Class এর প্রধান বৈশিষ্ট্য

  1. সহজ কনফিগারেশন: বিভিন্ন প্যারামিটার সেটআপ করে ফাইল আপলোড করা যায়।
  2. ভ্যালিডেশন সাপোর্ট: ফাইল টাইপ, সাইজ, এবং অন্যান্য বৈশিষ্ট্য যাচাই করা হয়।
  3. স্বয়ংক্রিয় নামকরণ: আপলোড করা ফাইলের নাম স্বয়ংক্রিয়ভাবে জেনারেট করা যায়।
  4. এরর হ্যান্ডলিং: ফাইল আপলোডে কোনো ত্রুটি হলে স্পষ্ট এরর মেসেজ দেখায়।

File Uploading Class সেটআপ

১. ফাইল আপলোড করার জন্য ফোল্ডার তৈরি

আপনার প্রজেক্ট ডিরেক্টরির মধ্যে একটি ফোল্ডার তৈরি করুন যেখানে ফাইলগুলো আপলোড হবে। উদাহরণস্বরূপ:

project_root/uploads/

২. Controller তৈরি

FileUpload.php নামে একটি Controller তৈরি করুন এবং নিম্নলিখিত কোড যোগ করুন:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class FileUpload extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper(['form', 'url']); // ফর্ম এবং URL হেল্পার লোড
    }

    public function index() {
        $this->load->view('file_upload_form'); // ফর্ম ভিউ লোড
    }

    public function upload() {
        $config['upload_path'] = './uploads/'; // আপলোড ফোল্ডারের পাথ
        $config['allowed_types'] = 'jpg|png|jpeg|gif'; // অনুমোদিত ফাইল টাইপ
        $config['max_size'] = 2048; // ফাইলের সর্বোচ্চ সাইজ (KB)
        $config['file_name'] = time(); // ফাইলের নাম স্বয়ংক্রিয়ভাবে

        $this->load->library('upload', $config); // Upload লাইব্রেরি লোড

        if (!$this->upload->do_upload('userfile')) { // ফাইল আপলোড চেক
            $error = ['error' => $this->upload->display_errors()]; // এরর মেসেজ
            $this->load->view('file_upload_form', $error); // এরর সহ ফর্ম দেখান
        } else {
            $data = ['upload_data' => $this->upload->data()]; // সফল আপলোডের ডেটা
            $this->load->view('file_upload_success', $data); // সফল মেসেজ দেখান
        }
    }
}

View তৈরি

১. ফাইল আপলোড ফর্ম (file_upload_form.php)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>File Upload</title>
</head>
<body>
    <h2>Upload a File</h2>
    <?php if (isset($error)) echo $error; ?> <!-- এরর দেখান -->
    <?php echo form_open_multipart('fileupload/upload'); ?> <!-- ফাইল আপলোড ফর্ম -->
    <input type="file" name="userfile" size="20">
    <br><br>
    <input type="submit" value="Upload">
    </form>
</body>
</html>

২. সফল আপলোডের জন্য View (file_upload_success.php)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload Successful</title>
</head>
<body>
    <h2>File Uploaded Successfully!</h2>
    <p>File Name: <?php echo $upload_data['file_name']; ?></p>
    <p>File Size: <?php echo $upload_data['file_size']; ?> KB</p>
    <p>File Type: <?php echo $upload_data['file_type']; ?></p>
</body>
</html>

গুরুত্বপূর্ণ কনফিগারেশন প্যারামিটার

প্যারামিটারবর্ণনা
upload_pathফাইল আপলোড করার ফোল্ডারের পাথ।
allowed_typesফাইলের অনুমোদিত টাইপ (যেমন `jpg
max_sizeফাইলের সর্বোচ্চ সাইজ (KB)।
max_widthইমেজের সর্বোচ্চ প্রস্থ (পিক্সেলে)।
max_heightইমেজের সর্বোচ্চ উচ্চতা (পিক্সেলে)।
file_nameফাইলের নতুন নাম সেট করতে।
encrypt_nameফাইলের নাম এনক্রিপ্ট করতে (TRUE/FALSE)।

এরর হ্যান্ডলিং

আপলোডের সময় কোনো সমস্যা হলে এরর মেসেজ পাওয়ার জন্য display_errors() মেথড ব্যবহার করা হয়। উদাহরণ:

$error = $this->upload->display_errors();

উদাহরণ: কাস্টম ভ্যালিডেশন সহ ফাইল আপলোড

if (!$this->upload->do_upload('userfile')) {
    $error = ['error' => $this->upload->display_errors()];
    $this->load->view('file_upload_form', $error);
} else {
    $upload_data = $this->upload->data();
    if ($upload_data['image_width'] > 1024 || $upload_data['image_height'] > 768) {
        unlink($upload_data['full_path']); // অপ্রয়োজনীয় ফাইল ডিলিট করুন
        $error = "Image dimensions exceed 1024x768.";
        $this->load->view('file_upload_form', ['error' => $error]);
    } else {
        $this->load->view('file_upload_success', ['upload_data' => $upload_data]);
    }
}

File Uploading Class এর সুবিধা

  1. সহজ কনফিগারেশন: ফাইল আপলোডের জন্য বিভিন্ন প্যারামিটার সহজে সেট করা যায়।
  2. সুরক্ষিত আপলোড: ফাইল টাইপ এবং সাইজ যাচাই করে।
  3. স্বয়ংক্রিয় নামকরণ: একই নামে ফাইল আপলোড হলে কনফ্লিক্ট এড়ানো যায়।
  4. ডিবাগিং সুবিধা: এরর মেসেজ দেখে সমস্যার কারণ চিহ্নিত করা সহজ।

CodeIgniter এর File Uploading Class দ্রুত এবং নিরাপদে ফাইল আপলোড করার একটি আদর্শ সমাধান।

Content added By

Multiple File Uploading

CodeIgniter-এ Multiple File Uploading খুবই সহজ এবং কার্যকরী। এটি ইউজারদের একাধিক ফাইল একসাথে আপলোড করার সুবিধা দেয়। CodeIgniter এর বিল্ট-ইন ফাইল আপলোড লাইব্রেরি ব্যবহার করে এটি সহজে করা যায়।


ফাইল আপলোডের জন্য প্রয়োজনীয় ধাপ

ধাপ ১: ফর্ম তৈরি

আপনার ভিউ ফাইলে একটি ফাইল আপলোড ফর্ম তৈরি করুন। এটি HTML-এর multiple অ্যাট্রিবিউট ব্যবহার করে একাধিক ফাইল নির্বাচন করতে দেয়।

উদাহরণ:

<form action="<?= base_url('upload/multiple') ?>" method="post" enctype="multipart/form-data">
    <label for="files">Choose multiple files:</label>
    <input type="file" name="files[]" multiple>
    <button type="submit">Upload</button>
</form>

ধাপ ২: রাউট কনফিগার করা

app/Config/Routes.php ফাইলে একটি নতুন রাউট যোগ করুন:

$routes->post('upload/multiple', 'UploadController::multiple');

ধাপ ৩: কন্ট্রোলার তৈরি

একটি কন্ট্রোলার তৈরি করুন (যেমন: UploadController.php) এবং ফাইল আপলোড লজিক যোগ করুন।

কন্ট্রোলার উদাহরণ:

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class UploadController extends Controller
{
    public function multiple()
    {
        $files = $this->request->getFiles(); // সমস্ত ফাইল রিট্রিভ

        foreach ($files['files'] as $file) {
            if ($file->isValid() && !$file->hasMoved()) {
                // ফাইল আপলোড করা
                $file->move(WRITEPATH . 'uploads', $file->getClientName());
            }
        }

        return "Files have been uploaded successfully!";
    }
}

ধাপ ৪: ফাইল সংরক্ষণের জন্য ডিরেক্টরি তৈরি

আপনার writable/uploads ফোল্ডার নিশ্চিত করুন এবং সেটি রাইটেবল করুন।

Linux-এ:

chmod -R 0777 writable/uploads

ফাইল আপলোড করার সময় ভ্যালিডেশন যোগ করা

আপলোড করার সময় ফাইলের ধরন বা সাইজ যাচাই করার জন্য ভ্যালিডেশন যোগ করতে পারেন।

ভ্যালিডেশন সহ কন্ট্রোলার উদাহরণ:

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class UploadController extends Controller
{
    public function multiple()
    {
        $files = $this->request->getFiles();
        $uploadedFiles = [];

        foreach ($files['files'] as $file) {
            if ($file->isValid() && !$file->hasMoved()) {
                // ফাইল ভ্যালিডেশন
                if ($file->getSize() <= 2048000 && in_array($file->getExtension(), ['jpg', 'png', 'gif'])) {
                    $file->move(WRITEPATH . 'uploads', $file->getClientName());
                    $uploadedFiles[] = $file->getClientName();
                }
            }
        }

        if (count($uploadedFiles) > 0) {
            return "Uploaded Files: " . implode(', ', $uploadedFiles);
        } else {
            return "No valid files to upload.";
        }
    }
}

ফাইল লিস্ট দেখানো

আপলোড হওয়া ফাইলগুলোর লিস্ট দেখাতে চাইলে, writable/uploads ডিরেক্টরি থেকে ফাইল লিস্ট রিট্রিভ করতে পারেন।

উদাহরণ:

public function listFiles()
{
    $files = array_diff(scandir(WRITEPATH . 'uploads'), ['.', '..']);
    return view('file_list', ['files' => $files]);
}

গুরুত্বপূর্ণ মেথড এবং প্রপার্টি

মেথড/প্রপার্টিকাজ
$this->request->getFiles()সমস্ত ফাইল রিট্রিভ করে।
$file->isValid()ফাইলটি বৈধ কিনা যাচাই করে।
$file->hasMoved()ফাইলটি ইতিমধ্যে মুভ করা হয়েছে কিনা যাচাই করে।
$file->getClientName()ফাইলের মূল নাম রিট্রিভ করে।
$file->getExtension()ফাইলের এক্সটেনশন রিট্রিভ করে।
$file->getSize()ফাইলের সাইজ (বাইটে) রিট্রিভ করে।
$file->move($path, $name)নির্দিষ্ট ডিরেক্টরিতে ফাইলটি সংরক্ষণ করে।

Common Errors এবং সমাধান

Error: ফাইল আপলোড হচ্ছে না

  • সমাধান: নিশ্চিত করুন যে writable/uploads ফোল্ডার রাইটেবল।

Error: ফাইল সাইজ লিমিট এক্সসিডেড

  • সমাধান: PHP এর php.ini ফাইলে upload_max_filesize এবং post_max_size বাড়ান।
upload_max_filesize = 5M
post_max_size = 10M

CodeIgniter-এ Multiple File Uploading প্রক্রিয়াটি সহজ এবং কার্যকর। ভ্যালিডেশন এবং কাস্টমাইজেশনের মাধ্যমে এটি আরও নিরাপদ এবং ব্যবহারবান্ধব করা যায়। এই পদ্ধতি ব্যবহার করে আপনি সহজেই ইউজারের একাধিক ফাইল আপলোডের প্রয়োজনীয়তা পূরণ করতে পারবেন।

Content added By

ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং

CodeIgniter ফ্রেমওয়ার্কে ফাইল আপলোড করার জন্য একটি বিল্ট-ইন File Uploading Class রয়েছে। এই ক্লাস ব্যবহার করে ফাইল আপলোড এবং তার ভ্যালিডেশন সহজে করা যায়। ফাইল ভ্যালিডেশন সঠিকভাবে পরিচালনা করলে ব্যবহারকারীর ভুল ইনপুট বা অবৈধ ফাইল থেকে সিস্টেম সুরক্ষিত থাকে।


ফাইল আপলোড সেটআপ

Controller উদাহরণ:

ফাইল আপলোড প্রক্রিয়া পরিচালনার জন্য একটি Controller তৈরি করুন।

<?php
namespace App\Controllers;

use CodeIgniter\Controller;

class FileUpload extends Controller {
    public function upload() {
        helper(['form', 'url']);

        // ফাইল ভ্যালিডেশন নিয়ম
        $rules = [
            'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,jpg,jpeg,png,gif]'
        ];

        if (!$this->validate($rules)) {
            // ত্রুটি বার্তা
            return view('upload_form', [
                'validation' => $this->validator
            ]);
        } else {
            $file = $this->request->getFile('file');

            if ($file->isValid() && !$file->hasMoved()) {
                $file->move(WRITEPATH . 'uploads');
                return view('upload_form', ['success' => 'File uploaded successfully!']);
            } else {
                return view('upload_form', ['error' => $file->getErrorString()]);
            }
        }
    }
}

ফাইল ভ্যালিডেশন নিয়ম

ভ্যালিডেশন রুলস:

  1. uploaded[file]: চেক করে ফাইল আপলোড হয়েছে কিনা।
  2. max_size[file,2048]: ফাইলের সর্বোচ্চ সাইজ সীমা (কিলোবাইটে)।
  3. ext_in[file,jpg,jpeg,png,gif]: অনুমোদিত ফাইল এক্সটেনশন চেক করে।
  4. mime_in[file,image/jpg,image/jpeg,image/png,image/gif]: ফাইলের MIME টাইপ যাচাই করে।

ভ্যালিডেশন উদাহরণ:

$rules = [
    'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,jpg,jpeg,png,gif]|mime_in[file,image/jpg,image/jpeg,image/png,image/gif]'
];

View ফাইল উদাহরণ

app/Views/upload_form.php ফাইল তৈরি করুন:

<!DOCTYPE html>
<html>
<head>
    <title>File Upload</title>
</head>
<body>
    <h1>Upload a File</h1>

    <!-- ত্রুটি বার্তা -->
    <?php if (isset($validation)): ?>
        <div style="color: red;">
            <?= $validation->listErrors(); ?>
        </div>
    <?php endif; ?>

    <!-- সফল বার্তা -->
    <?php if (isset($success)): ?>
        <div style="color: green;">
            <?= $success; ?>
        </div>
    <?php endif; ?>

    <!-- ফর্ম -->
    <form action="/fileupload/upload" method="post" enctype="multipart/form-data">
        <?= csrf_field(); ?>
        <label for="file">Choose a file:</label>
        <input type="file" name="file" id="file">
        <button type="submit">Upload</button>
    </form>

    <!-- ত্রুটি -->
    <?php if (isset($error)): ?>
        <div style="color: red;">
            <?= $error; ?>
        </div>
    <?php endif; ?>
</body>
</html>

ফাইল Errors হ্যান্ডলিং

Common Errors এবং তাদের সমাধান:

  1. The file was not uploaded:
    • ফাইল আপলোড ছাড়া ফর্ম সাবমিট হয়েছে।
    • সমাধান: uploaded[file] রুল ব্যবহার করুন।
  2. The file exceeds the maximum allowed size:
    • আপলোডকৃত ফাইলের সাইজ সীমার বাইরে।
    • সমাধান: max_size[file,2048] দিয়ে সাইজ সীমা বাড়ান।
  3. The filetype you are attempting to upload is not allowed:
    • অবৈধ ফাইল টাইপ।
    • সমাধান: ext_in[file,jpg,png] এবং mime_in রুল ব্যবহার করুন।
  4. The file you are attempting to upload exceeds your server's maximum allowed size:
    • সার্ভারের php.ini ফাইলের কনফিগারেশন পরিবর্তন করুন:

      upload_max_filesize = 5M
      post_max_size = 8M
      

ফাইল Errors চেক করার জন্য Method:

if ($file->hasMoved()) {
    echo "File already moved!";
}

if (!$file->isValid()) {
    echo $file->getErrorString();
}

ফাইল সংরক্ষণ অবস্থান নির্ধারণ

ডিফল্ট লোকেশন পরিবর্তন:

আপনার ফাইল সংরক্ষণের জন্য কাস্টম লোকেশন নির্ধারণ করতে পারেন:

$file->move(WRITEPATH . 'custom_uploads');

ফাইলের নতুন নাম নির্ধারণ:

$file->move(WRITEPATH . 'uploads', 'new_filename.jpg');

ফাইলের তথ্য পড়া

আপলোডকৃত ফাইল থেকে বিস্তারিত তথ্য পেতে পারেন:

$file = $this->request->getFile('file');
echo $file->getName();        // ফাইলের নাম
echo $file->getSize();        // সাইজ (বাইটে)
echo $file->getExtension();   // এক্সটেনশন
echo $file->getMimeType();    // MIME টাইপ

সারসংক্ষেপ

CodeIgniter-এ ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং একটি শক্তিশালী ফিচার। এটি ব্যবহারকারীর অবৈধ ইনপুট এবং সিস্টেমের ডেটা ক্ষতির ঝুঁকি কমায়। সঠিকভাবে ফাইল ভ্যালিডেশন এবং Errors হ্যান্ডলিং করলে অ্যাপ্লিকেশনের নিরাপত্তা এবং কার্যকারিতা বৃদ্ধি পায়।

Content added By

Image Manipulation এবং Resizing

CodeIgniter ফ্রেমওয়ার্কের মাধ্যমে ইমেজ ম্যানিপুলেশন যেমন Resizing, Cropping, Rotating, এবং Watermarking সহজেই করা যায়। এটি করার জন্য CodeIgniter বিল্ট-ইন Image Manipulation Library প্রদান করে।


Image Manipulation লাইব্রেরি লোড করা

লাইব্রেরি ব্যবহারের জন্য আপনাকে এটি লোড করতে হবে।

$this->load->library('image_lib');

Image Resizing (ইমেজের আকার পরিবর্তন)

উদাহরণ: একটি ইমেজ রিসাইজ করা

  1. Controller কোড:

    public function resizeImage()
    {
        // Config সেট করুন
        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/sample.jpg'; // মূল ইমেজ
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = TRUE;
        $config['width'] = 200; // নতুন প্রস্থ
        $config['height'] = 200; // নতুন উচ্চতা
    
        // লাইব্রেরি লোড এবং কনফিগারেশন সেট করা
        $this->load->library('image_lib', $config);
    
        // রিসাইজ করার জন্য লাইব্রেরি চালু
        if ($this->image_lib->resize()) {
            echo "Image resized successfully!";
        } else {
            echo $this->image_lib->display_errors();
        }
    }
    
  2. ইমেজ ফাইল অবস্থান: আপনার ইমেজ ফাইলটি ./uploads/sample.jpg ডিরেক্টরিতে থাকতে হবে।

Image Cropping (ইমেজ কাটিং)

উদাহরণ: একটি ইমেজ ক্রপ করা

  1. Controller কোড:

    public function cropImage()
    {
        // Config সেট করুন
        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/sample.jpg'; // মূল ইমেজ
        $config['maintain_ratio'] = FALSE;
        $config['x_axis'] = 50; // X-অক্ষ থেকে শুরু
        $config['y_axis'] = 50; // Y-অক্ষ থেকে শুরু
        $config['width'] = 200; // ক্রপ প্রস্থ
        $config['height'] = 200; // ক্রপ উচ্চতা
    
        // লাইব্রেরি লোড এবং কনফিগারেশন সেট করা
        $this->load->library('image_lib', $config);
    
        // ক্রপ করার জন্য লাইব্রেরি চালু
        if ($this->image_lib->crop()) {
            echo "Image cropped successfully!";
        } else {
            echo $this->image_lib->display_errors();
        }
    }
    

Image Rotating (ইমেজ ঘোরানো)

উদাহরণ: একটি ইমেজ ঘোরানো

  1. Controller কোড:

    public function rotateImage()
    {
        // Config সেট করুন
        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/sample.jpg'; // মূল ইমেজ
        $config['rotation_angle'] = '90'; // ঘোরানোর কোণ (90, 180, 270)
    
        // লাইব্রেরি লোড এবং কনফিগারেশন সেট করা
        $this->load->library('image_lib', $config);
    
        // রোটেট করার জন্য লাইব্রেরি চালু
        if ($this->image_lib->rotate()) {
            echo "Image rotated successfully!";
        } else {
            echo $this->image_lib->display_errors();
        }
    }
    

Image Watermarking (ওয়াটারমার্ক যোগ করা)

উদাহরণ: একটি ইমেজে টেক্সট ওয়াটারমার্ক যোগ করা

  1. Controller কোড:

    public function watermarkImage()
    {
        // Config সেট করুন
        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/sample.jpg'; // মূল ইমেজ
        $config['wm_text'] = 'Sample Watermark'; // টেক্সট ওয়াটারমার্ক
        $config['wm_type'] = 'text';
        $config['wm_font_path'] = './system/fonts/texb.ttf'; // ফন্ট ফাইল
        $config['wm_font_size'] = '16';
        $config['wm_font_color'] = 'ffffff'; // সাদা রঙ
        $config['wm_vrt_alignment'] = 'bottom';
        $config['wm_hor_alignment'] = 'center';
    
        // লাইব্রেরি লোড এবং কনফিগারেশন সেট করা
        $this->load->library('image_lib', $config);
    
        // ওয়াটারমার্ক যোগ করার জন্য লাইব্রেরি চালু
        if ($this->image_lib->watermark()) {
            echo "Watermark added successfully!";
        } else {
            echo $this->image_lib->display_errors();
        }
    }
    

লাইব্রেরি পুনঃআরম্ভ করা

যদি একাধিক ইমেজ প্রসেস করতে হয়, তবে প্রতিবার লাইব্রেরি রিসেট করুন:

$this->image_lib->clear();

Common Errors এবং সমাধান

  1. Error: GD2 বা ImageMagick Library মিসিং
    • নিশ্চিত করুন যে আপনার সার্ভারে GD2 অথবা ImageMagick ইন্সটল রয়েছে।
  2. Error: Invalid File Path
    • source_image এর পাথ সঠিক কিনা নিশ্চিত করুন।
  3. Error: Permission Denied
    • ইমেজ ফোল্ডারের পারমিশন চেক করুন (Linux-এ chmod 777 ব্যবহার করতে পারেন)।

ইমেজ ম্যানিপুলেশন লাইব্রেরি Config অপশনসমূহ

অপশনবিবরণ
image_libraryইমেজ প্রসেসিং লাইব্রেরি (যেমন: gd2, imagemagick)
source_imageমূল ইমেজ ফাইলের পাথ
new_imageপ্রসেসড ইমেজ সংরক্ষণের পাথ
maintain_ratioঅনুপাত বজায় রাখবে কিনা (TRUE/FALSE)
widthইমেজের প্রস্থ
heightইমেজের উচ্চতা
rotation_angleঘোরানোর কোণ (যেমন: 90, 180)
wm_textওয়াটারমার্ক টেক্সট
wm_typeওয়াটারমার্ক টাইপ (টেক্সট বা ইমেজ)

সারাংশ

CodeIgniter-এর Image Manipulation Library ব্যবহার করে আপনি সহজেই ইমেজ রিসাইজ, ক্রপ, রোটেট, এবং ওয়াটারমার্ক যুক্ত করতে পারেন। এটি ইমেজ প্রসেসিং-এর জন্য একটি শক্তিশালী এবং ব্যবহার-বান্ধব সমাধান প্রদান করে।

Content added By
Promotion