Chủ Nhật, 18 tháng 10, 2009

Upload ảnh có đóng dấu bản quyền - cakephp 1.2

Đóng dấu cho ảnh thật sự cần thiết khi chúng ta muốn giữ bản quyền cho ảnh đó. Bài viết này sẽ hướng dẫn mọi người làm việc đó một cách dễ dàng. Bắt dầu nào :
Đầu tiên là tạo cơ sở dữ liệu :

CREATE TABLE `images` (
`id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`images` VARCHAR( 255 ) NOT NULL
)

Vậy là xong bước đầu tiên. Tiếp đến chúng ta sẽ tạo controller / model / views

Đầu tiên là controller : app/controllers/images_controller.php:

<?php
class ImagesController extends AppController
{
var $name = 'Images';
var $components = array('Upload');

function add()
{
if(! empty ($this->data))
{
$this->Image->create ();
if($this->Upload->upload ($this->data['Image']['image'], WWW_ROOT . 'img' . DS))
{
$this->data['Image']['images'] = $this->data['Image']['image']['name'];
}
if($this->Image->save ($this->data))
{
$this->Session->setFlash (__ ('The Image has been saved', true));
$this->redirect ($this->referer());
}else
{
$this->Session->setFlash (__ ('The Image could not be saved. Please, try again.', true));
}
}
}
}
?>

Tiếp đến là model : app/models/image.php

<?php
class Image extends AppModel {
var $name = 'Image';
}
?>

Cuối cùng là views : app/views/images/add.ctp

<div class="images form">
<?php $session->flash();?>
<?php echo $form->create('Image', array('type' => 'file')); ?>
<fieldset>
<legend><?php __('Add image');?></legend>
<div class="group">
<div><?php __('Image');?></div>
<div><?php echo $form->file('image',array('label'=>'',)); ?></div>
</div>
</fieldset>
<?php echo $form->end('add');?>
</div>

Để có thể upload được ảnh ta sẽ sử dụng components. Ở đây ta sẽ tạo 1 file có tên là upload.php trong components

app/controllers/components/upload.php

<?php
class UploadComponent extends Object {
function upload(&$file, $dir) {
$return = false;
// current time in miliseconds
$time = microtime ( 1 ) * 1000;
$file['name']=md5($time).$file['name'];

if(@move_uploaded_file($file['tmp_name'],$dir.$file['name']))
{
//Dòng này là ảnh sẽ được upload
$main_img         = $dir.$file['name']; // main big photo / picture

//Dòng này là ảnh sẽ đóng dấu lên ảnh được upload
$watermark_img    = "watermark.gif"; // use GIF or PNG, JPEG has no tranparency support
$padding         = 3; // distance to border in pixels for watermark image
$opacity        = 100;    // image opacity for transparent watermark

$watermark     = imagecreatefromgif($dir.$watermark_img); // create watermark
$image         = imagecreatefromjpeg($main_img); // create main graphic

if(!$image || !$watermark) die("Error: main image or watermark could not be loaded!");

$watermark_size     = getimagesize($dir.$watermark_img);
$watermark_width     = $watermark_size[0];
$watermark_height     = $watermark_size[1];

$image_size     = getimagesize($main_img);
$dest_x         = $image_size[0] - $watermark_width - $padding;
$dest_y         = $image_size[1] - $watermark_height - $padding;

// copy watermark on main image
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, $opacity);

// print image to screen
header("content-type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
imagedestroy($watermark);
$return = true;
}
return $return;
}
}
?>


file ảnh watemark.gif được đặt trong thư mục : app/webroot/img/watermark.gif.

Muốn cho ảnh watermark.gif mờ đi thì ta chỉ việc chỉnh độ opacity là được.

Bạn có thể download file ảnh watermark.gif tại đây

1 nhận xét:

  1. tạo xong hết như trên rồi thì làm sao để chạy nó nhỉ

    Trả lờiXóa