Generate Thumbnails with GD2 and ImageMagick in CodeIgniter

This guide explains why thumbnails are essential, outlines common use cases, and provides step‑by‑step CodeIgniter examples for creating 50×50 thumbnails using PHP's GD2 library and ImageMagick, including configuration, resizing, and error handling.

21CTO
21CTO
21CTO
Generate Thumbnails with GD2 and ImageMagick in CodeIgniter

Community Introduction: This article covers thumbnail handling, a common task where uploaded images are resized to fit various devices and UI requirements.

Overview

Thumbnails are smaller versions of large images that improve download speed, reduce user data consumption, and prevent app crashes caused by oversized images.

Typical scenarios for using thumbnails include:

Fitting images into containers with fixed dimensions without leaving blank space.

Displaying images at appropriate resolution without relying on CSS/HTML size limits.

Maintaining aspect ratio to avoid distortion.

Tools & Techniques for Scaling & Cropping Images

In an LNMP environment, the GD2 extension (built into PHP) can be used after enabling it in php.ini. Alternatively, ImageMagick provides powerful image manipulation capabilities, allowing the creation of web‑based Photoshop‑like features.

CodeIgniter offers a fairly complete image‑processing library.

Thumbnail Configuration

The following example shows a complete upload flow that generates a 50×50 thumbnail using GD2.

$config['image_library'] = 'gd2';
$config['source_image'] = './uploads/'.$imgName.'.jpg';
$config['new_image'] = './uploads/'.$imgName.'_new.jpeg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 50;
$config['height'] = 50;

Load the library and perform the resize:

$this->load->library('image_lib', $config);
$this->image_lib->resize();
if (!$this->image_lib->resize()) { echo $this->image_lib->display_errors(); }

Reusable resize function:

function image_resize($img_name) {
$img_path = realpath('img')."\\images\\uploaded\\".$img_name.'.jpeg';
$config['image_library'] = 'gd2';
$config['source_image'] = './img/images/uploaded/'.$img_name.'.jpeg';
$config['new_image'] = './img/images/uploaded/'.$img_name.'_new.jpeg';
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['quality'] = '100%';
$config['width'] = 50;
$config['height'] = 50;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
if (!$this->image_lib->resize()) { echo $this->image_lib->display_errors(); }
}
Full Image‑Processing Example

Uploading and generating thumbnails in CodeIgniter:

function do_upload() {
$upload_config = array(
'upload_path'   => realpath('assets/'),
'allowed_types' => 'gif|jpg|png',
'max_size'      => '30000'
);
$this->upload->initialize($upload_config);
// Re‑map $_FILES for each file field
foreach($_FILES['userfile'] as $key => $val) {
$i = 1;
foreach($val as $v) {
$field_name = 'file_'.$i;
$_FILES[$field_name][$key] = $v;
$i++;
}
}
unset($_FILES['userfile']);
$error = array(); $success = array();
foreach($_FILES as $field_name => $file) {
if (!$this->upload->do_upload($field_name)) {
$error['upload'][] = $this->upload->display_errors();
} else {
$upload_data = $this->upload->data();
$resize_config = array(
'source_image' => $upload_data['full_path'],
'new_image'    => $upload_data['file_path'].'thumb_'.$upload_data['file_name'],
'width'        => 200,
'height'       => 200
);
$this->image_lib->initialize($resize_config);
if (!$this->image_lib->resize()) {
$error['resize'][] = $this->image_lib->display_errors();
} else {
$success[] = $upload_data;
}
}
}
if (count($error) > 0) { $data['error'] = $error; } else { $data['success'] = $success; }
$this->load->view('upload', $data);
}

Using ImageMagick directly (no framework):

<?php
$thumbnail = new Imagick($pix);
$wid = 128;
$thumbnail->thumbnailImage($wid, 0);
$thumbnail->enhanceImage();
$thumbnail->sharpenimage(1,1,Imagick::CHANNEL_ALL);
$thumb_url = $thumbnail->writeImage('thumbs/'.$thb);
?>

In CodeIgniter, ImageMagick can be used by loading the library and setting:

$this->load->library('image_lib');
$config['image_library'] = 'ImageMagick';
$config['library_path'] = $path;

The rest of the configuration mirrors the GD2 example.

Conclusion

Frameworks simplify image‑processing tasks; the article demonstrated CodeIgniter, but the same principles apply to Laravel, Yii, ThinkPHP, and other PHP frameworks.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

Image ProcessingPHPImageMagickthumbnailCodeIgniterGD2
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.