পিএইচপি দিয়ে সহজে বানাও ওয়াটারমার্ক - ৪ [FILES array দিয়ে ফাইল আপলোড করে ওয়াটারমার্ক করা]

আসসালামু আলাইকুম,
এরই মধ্যে দুটি পদ্ধতি দেখিয়ে ফেলেছি। সেগুলো এখানে পাবেন।
  1. পিএইচপি দিয়ে সহজে বানাও ওয়াটারমার্ক - ১
  2. পিএইচপি দিয়ে সহজে বানাও ওয়াটারমার্ক - ২
  3. পিএইচপি দিয়ে সহজে বানাও ওয়াটারমার্ক - ৩
এটাই হয়ত আমার পক্ষ থেকে পিএইচপি ইমেজ ওয়াটারমার্কিং এর শেষ পর্ব। তবে জিআর+ থেকে নয়। এরপরেও হয়তো আরও ভালো স্ক্রিপ্ট আসবে এই সম্পর্কে।



এবার আসব আমার চার নাম্বার স্ক্রিপ্টে।
এখানে আমরা ফাইল আপলোড করে ওয়াটার মার্ক বানাতে পারবো। এখানে ওয়াটার মার্ক ইমেজ আগে থেকে ঠিক করা থাকবে। কিন্তু মেইন ইমেজ ফাইল আমরা আপলোড করে নিব।
এখানে ফাইল এরে ব্যাবহার করে ইমেজ আপলোড করবো।


পিএইচপি প্রোগ্রাম রান করাতে হলে অবশ্যই ওয়েব সার্ভার লাগবে। কিন্তু ওয়েব সার্ভার থাকতে হলে লাগবে টাকা। টাকা যদি থাকে বা ওয়েবসারভার কেনা থাকলে এটা রান করা কোনো ব্যাপার না, ফাইল আপলোড করে ব্রাউজার দিয়ে খুললেই হবে।
আমাদের জন্য আমরা একটা অফলাইনে অ্যাপাচি সার্ভার সিমিউলেট করতে হবে। এর নাম xampp. 
ডাউনলোড করে নাও এখান থেকে https://www.apachefriends.org

এখন সেটআপ শেষ হলে সি ড্রাইভে গিয়ে xampp ফোল্ডারে যাও এবং htdocs ফাইল ফোল্ডার ওপেন কর।
সেখানে একটা ফাইল খুলো watermark নামে বা যেকোনো নামে।

এখন ব্রাউজার খুলো।

অ্যাড্রেস বারে লিখো http://localhost/"তোমার দেওয়া ফোল্ডারের নাম"
আমার ক্ষেত্রে water
http://localhost/water
এবার ঐ ফোল্ডারে index.php ফাইল তৈরি কর কোন টেক্সট ফাইল এডিটর দিয়ে।

এবার ঐ ডিরেক্টরিতে index.php তৈরি করে নিচের কোড লিখে সেভ কর,

<?php
if(isset($_FILES['image_file']))
{
$max_size = 800; //max image size in Pixels
$destination_folder = 'watermark';
$watermark_png_file = 'watermark.png'; //watermark png file
$image_name = $_FILES['image_file']['name']; //file name
$image_size = $_FILES['image_file']['size']; //file size
$image_temp = $_FILES['image_file']['tmp_name']; //file temp

$image_type = $_FILES['image_file']['type']; //file type
switch(strtolower($image_type)){ //determine uploaded image type
//Create new image from file
case 'image/png':
$image_resource =  imagecreatefrompng($image_temp);
break;
case 'image/gif':
$image_resource =  imagecreatefromgif($image_temp);
break;        
case 'image/jpeg': case 'image/pjpeg':
$image_resource = imagecreatefromjpeg($image_temp);
break;
default:
$image_resource = false;
}

if($image_resource){
//Copy and resize part of an image with resampling
list($img_width, $img_height) = getimagesize($image_temp);
   //Construct a proportional size of new image
$image_scale        = min($max_size / $img_width, $max_size / $img_height);
$new_image_width    = ceil($image_scale * $img_width);
$new_image_height   = ceil($image_scale * $img_height);
$new_canvas         = imagecreatetruecolor($new_image_width , $new_image_height);
if(imagecopyresampled($new_canvas, $image_resource , 0, 0, 0, 0, $new_image_width, $new_image_height, $img_width, $img_height))
{
if(!is_dir($destination_folder)){
mkdir($destination_folder);//create dir if it doesn't exist
}
//center watermark
$watermark_left = ($new_image_width/2)-(300/2); //watermark left
$watermark_bottom = ($new_image_height/2)-(100/2); //watermark bottom
$watermark = imagecreatefrompng($watermark_png_file); //watermark image
imagecopy($new_canvas, $watermark, $watermark_left, $watermark_bottom, 0, 0, 300, 100); //merge image
//output image direcly on the browser.
header('Content-Type: image/jpeg');
imagejpeg($new_canvas, NULL , 90);
//Or Save image to the folder
//imagejpeg($new_canvas, $destination_folder.'/'.$image_name , 90);
//free up memory
imagedestroy($new_canvas);
imagedestroy($image_resource);
die();
}
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#upload-form {
padding: 20px;
background: #F7F7F7;
border: 1px solid #CCC;
margin-left: auto;
margin-right: auto;
width: 400px;
}
#upload-form input[type=file] {
border: 1px solid #ddd;
padding: 4px;
}
#upload-form input[type=submit] {
height: 30px;
}
</style>
</head>
<body>
<form action="" id="upload-form" method="post" enctype="multipart/form-data">
<input type="file" name="image_file" />
<input type="submit" value="Send Image" />
</form>
</body>
</html>

হলুদ হাইলাইট করা অংশে ফাইলের সাইজ, ওয়াটার মার্ক ফাইল ঠিক করা হয়েছে।
কমলা হাইলাইট করা অংশে ইমেজের টেম্পরারি ফাইল বানান হয়েছে এবং ইমেজ সাইজ, ইমেজের এক্সটেনশন এবং ইমেজের নাম বের করা হয়েছে।
আকাশি হাইলাট অংশে ফাইলের এক্সটেনশন অনুযায়ী হেডার ফাইল সুইচ করা হয়েছে।
প্রতিটি অংশের পাশে কমেন্ট লেখা আছে, যাতে কোন অংশের কাজ কি বোঝা যায়। সেটা দেখলেই হবে। আমি আর তেমন কিছু লিখব না।

এবার index.php এর  সাথে একই ডিরেক্টরিতে watermark নামের ফোল্ডার বানাই ($destination_folder = 'watermark';  এর জন্য) এবং watermark.png রেখে দিয়ে ব্রাউজার দিয়ে চালু করি এভাবে।
http://localhost/water/index.php
আমি এখন FILES array দিয়ে করতে পারছি। মানে ফাইল আপলোড ইউজ করতে পারছি।
ধন্যবাদ সকলকে।

আমি ফেসবুকে আছি,



শেয়ার করুন

লেখকঃ

আমি তাওসিফ তুরাবি, অনলাইনাম (অনলাইন + নাম) ব্লগার তাওসিফ। এখন, ২০১৬ পর্যন্ত আমি ১৬ বছরের এক কিশোর। পড়াশোনা করি শহীদ পুলিশ স্মৃতি কলেজে। টেক ব্লগ লিখতে ভালবাসি। সাইন্স ফিকশন আর গল্প লিখতে পছন্দ করি।  জিআর+ ব্লগের এর একজন প্রতিষ্ঠাতা অ্যাডমিন।
আমাদের একটা ওয়েব ডেভেলপার ফার্ম আছে যার নাম জিআর+ আইটি বাংলাদেশ
এছাড়া আমার ব্যাক্তিগত ব্লগ রয়েছে। আমার ফেসবুক আইডিতে আমার সাথে সর্বক্ষণ যোগাযোগ করতে পারবেন। 


পূর্ববর্তী পোষ্ট
পরবর্তী পোষ্ট