* @version 1.48 <2005/07/18> * @copyright GNU General Public License (GPL) **/ /* // Sample ------------------------------------- $thumb=new Thumbnail("source.jpg"); // set source image file $thumb->size_width(100); // set width for thumbnail, or $thumb->size_height(300); // set height for thumbnail, or $thumb->size_auto(200); // set the biggest width or height for thumbnail $thumb->size(150,113); // set the biggest width and height for thumbnail $thumb->quality=75; //default 75 , only for JPG format $thumb->output_format='JPG'; // JPG | PNG $thumb->jpeg_progressive=0; // set progressive JPEG : 0 = no , 1 = yes $thumb->allow_enlarge=false; // allow to enlarge the thumbnail $thumb->CalculateQFactor(10000); // Calculate JPEG quality factor for a specific size in bytes $thumb->bicubic_resample=true; // [OPTIONAL] set resample algorithm to bicubic $thumb->img_watermark='watermark.png'; // [OPTIONAL] set watermark source file, only PNG format [RECOMENDED ONLY WITH GD 2 ] $thumb->img_watermark_Valing='TOP'; // [OPTIONAL] set watermark vertical position, TOP | CENTER | BOTTOM $thumb->img_watermark_Haling='LEFT'; // [OPTIONAL] set watermark horizonatal position, LEFT | CENTER | RIGHT $thumb->txt_watermark='Watermark text'; // [OPTIONAL] set watermark text [RECOMENDED ONLY WITH GD 2 ] $thumb->txt_watermark_color='000000'; // [OPTIONAL] set watermark text color , RGB Hexadecimal[RECOMENDED ONLY WITH GD 2 ] $thumb->txt_watermark_font=1; // [OPTIONAL] set watermark text font: 1,2,3,4,5 $thumb->txt_watermark_Valing='TOP'; // [OPTIONAL] set watermark text vertical position, TOP | CENTER | BOTTOM $thumb->txt_watermark_Haling='LEFT'; // [OPTIONAL] set watermark text horizonatal position, LEFT | CENTER | RIGHT $thumb->txt_watermark_Hmargin=10; // [OPTIONAL] set watermark text horizonatal margin in pixels $thumb->txt_watermark_Vmargin=10; // [OPTIONAL] set watermark text vertical margin in pixels $thumb->->memory_limit='32M'; //[OPTIONAL] set maximun memory usage, default 32 MB ('32M'). (use '16M' or '32M' for litter images) $thumb->max_execution_time'30'; //[OPTIONAL] set maximun execution time, default 30 seconds ('30'). (use '60' for big images o slow server) $thumb->process(); // generate image $thumb->show(); // show your thumbnail, or $thumb->save("thumbnail.jpg"); // save your thumbnail to file, or $image = $thumb->dump(); // get the image echo ($thumb->error_msg); // print Error Mensage //---------------------------------------------- ################################################ */ class Thumbnail { /** *@access public *@var integer Quality factor for JPEG output format, default 75 **/ var $quality=75; /** *@access public *@var string output format, default JPG, valid values 'JPG' | 'PNG' **/ var $output_format='JPG'; /** *@access public *@var integer set JPEG output format to progressive JPEG : 0 = no , 1 = yes **/ var $jpeg_progressive=0; /** *@access public *@var boolean allow to enlarge the thumbnail. **/ var $allow_enlarge=false; /** *@access public *@var string [OPTIONAL] set watermark source file, only PNG format [RECOMENDED ONLY WITH GD 2 ] **/ var $img_watermark=''; /** *@access public *@var string [OPTIONAL] set watermark vertical position, TOP | CENTER | BOTTOM **/ var $img_watermark_Valing='TOP'; /** *@access public *@var string [OPTIONAL] set watermark horizonatal position, LEFT | CENTER | RIGHT **/ var $img_watermark_Haling='LEFT'; /** *@access public *@var string [OPTIONAL] set watermark text [RECOMENDED ONLY WITH GD 2 ] **/ var $txt_watermark=''; /** *@access public *@var string [OPTIONAL] set watermark text color , RGB Hexadecimal[RECOMENDED ONLY WITH GD 2 ] **/ var $txt_watermark_color='000000'; /** *@access public *@var integer [OPTIONAL] set watermark text font: 1,2,3,4,5 **/ var $txt_watermark_font=1; /** *@access public *@var string [OPTIONAL] set watermark text vertical position, TOP | CENTER | BOTTOM **/ var $txt_watermark_Valing='TOP'; /** *@access public *@var string [OPTIONAL] set watermark text horizonatal position, LEFT | CENTER | RIGHT **/ var $txt_watermark_Haling='LEFT'; /** *@access public *@var integer [OPTIONAL] set watermark text horizonatal margin in pixels **/ var $txt_watermark_Hmargin=10; /** *@access public *@var integer [OPTIONAL] set watermark text vertical margin in pixels **/ var $txt_watermark_Vmargin=10; /** *@access public *@var bool [OPTIONAL] set resample algorithm to bicubic **/ var $bicubic_resample=false; /** *@access public *@var string [OPTIONAL] set maximun memory usage, default 8 MB ('8M'). (use '16M' for big images) **/ var $memory_limit='32M'; /** *@access public *@var string [OPTIONAL] set maximun execution time, default 30 seconds ('30'). (use '60' for big images) **/ var $max_execution_time='30'; /** *@access public *@var string errors mensage **/ var $error_msg=''; /** *@access private *@var mixed images **/ var $img; /** *open source image *@access public *@param string filename of the source image file *@return boolean **/ function Thumbnail($imgfile) { $img_info = getimagesize( $imgfile ); //detect image format switch( $img_info[2] ){ case 2: //JPEG $this->img["format"]="JPEG"; $this->img["src"] = ImageCreateFromJPEG ($imgfile); break; case 3: //PNG $this->img["format"]="PNG"; $this->img["src"] = ImageCreateFromPNG ($imgfile); $this->img["des"] = $this->img["src"]; break; default: $this->error_msg="Not Supported File"; return false; }//case $this->img["x"] = $img_info[0]; //original dimensions $this->img["y"] = $img_info[1]; $this->img["x_thumb"]= $this->img["x"]; //thumbnail dimensions $this->img["y_thumb"]= $this->img["y"]; $this->img["des"] = $this->img["src"]; // thumbnail = original return true; } /** *set height for thumbnail *@access public *@param integer height *@return boolean **/ function size_height($size=100) { //height $this->img["y_thumb"]=$size; if ($this->allow_enlarge==true) { $this->img["y_thumb"]=$size; } else { if ($size < ($this->img["y"])) { $this->img["y_thumb"]=$size; } else { $this->img["y_thumb"]=$this->img["y"]; } } if ($this->img["y"]>0) { $this->img["x_thumb"] = ($this->img["y_thumb"]/$this->img["y"])*$this->img["x"]; } else { $this->error_msg="Invalid size : Y"; return false; } } /** *set width for thumbnail *@access public *@param integer width *@return boolean **/ function size_width($size=100) { //width if ($this->allow_enlarge==true) { $this->img["x_thumb"]=$size; } else { if ( $size < ($this->img["x"])) { $this->img["x_thumb"]=$size; } else { $this->img["x_thumb"]=$this->img["x"]; } } if ($this->img["x"]>0) { $this->img["y_thumb"] = ($this->img["x_thumb"]/$this->img["x"])*$this->img["y"]; } else { $this->error_msg="Invalid size : x"; return false; } } /** *set the biggest width or height for thumbnail *@access public *@param integer width or height *@return boolean **/ function size_auto($size=100) { //size if ($this->img["x"]>=$this->img["y"]) { $this->size_width($size); } else { $this->size_height($size); } } /** *set the biggest width and height for thumbnail *@access public *@param integer width *@param integer height *@return boolean **/ function size($size_x,$size_y) { //size if ( (($this->img["x"])/$size_x) >= (($this->img["y"])/$size_y) ) { $this->size_width($size_x); } else { $this->size_height($size_y); } } /** *show your thumbnail, output image and headers *@access public *@return void **/ function show() { //show thumb Header("Content-Type: image/".$this->img["format"]); if ($this->output_format=="PNG") { //PNG imagePNG($this->img["des"]); } else { imageinterlace( $this->img["des"], $this->jpeg_progressive); imageJPEG($this->img["des"],"",$this->quality); } } /** *return the result thumbnail *@access public *@return mixed **/ function dump() { //dump thumb return $this->img["des"]; } /** *save your thumbnail to file *@access public *@param string output file name *@return boolean **/ function save($save="") { //save thumb if (empty($save)) { $this->error_msg='Not Save File'; return false; } if ($this->output_format=="PNG") { //PNG imagePNG($this->img["des"],"$save"); } else { imageinterlace( $this->img["des"], $this->jpeg_progressive); imageJPEG($this->img["des"],"$save",$this->quality); } return true; } /** *generate image *@access public *@return boolean **/ function process () { ini_set('memory_limit',$this->memory_limit); ini_set('max_execution_time',$this->max_execution_time); $X_des =$this->img["x_thumb"]; $Y_des =$this->img["y_thumb"]; //if ($this->checkgd2()) { $gd_version=$this->gdVersion(); if ($gd_version>=2) { //if (false) { $this->img["des"] = ImageCreateTrueColor($X_des,$Y_des); if ($this->txt_watermark!='' ) { sscanf($this->txt_watermark_color, "%2x%2x%2x", $red, $green, $blue); $txt_color=imageColorAllocate($this->img["des"] ,$red, $green, $blue); } if (!$this->bicubic_resample) { imagecopyresampled ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $X_des, $Y_des, $this->img["x"], $this->img["y"]); } else { $this->imageCopyResampleBicubic($this->img["des"], $this->img["src"], 0, 0, 0, 0, $X_des, $Y_des, $this->img["x"], $this->img["y"]); } if ($this->img_watermark!='' && file_exists($this->img_watermark)) { $this->img["watermark"]=ImageCreateFromPNG ($this->img_watermark); $this->img["x_watermark"] =imagesx($this->img["watermark"]); $this->img["y_watermark"] =imagesy($this->img["watermark"]); imagecopyresampled ($this->img["des"], $this->img["watermark"], $this->calc_position_H (), $this->calc_position_V (), 0, 0, $this->img["x_watermark"], $this->img["y_watermark"],$this->img["x_watermark"], $this->img["y_watermark"]); } if ($this->txt_watermark!='' ) { imagestring ( $this->img["des"], $this->txt_watermark_font, $this->calc_text_position_H() , $this->calc_text_position_V(), $this->txt_watermark,$txt_color); } } else { $this->img["des"] = ImageCreate($X_des,$Y_des); if ($this->txt_watermark!='' ) { sscanf($this->txt_watermark_color, "%2x%2x%2x", $red, $green, $blue); $txt_color=imageColorAllocate($this->img["des"] ,$red, $green, $blue); } // pre copy image, allocating color of water mark, GD < 2 can't resample colors if ($this->img_watermark!='' && file_exists($this->img_watermark)) { $this->img["watermark"]=ImageCreateFromPNG ($this->img_watermark); $this->img["x_watermark"] =imagesx($this->img["watermark"]); $this->img["y_watermark"] =imagesy($this->img["watermark"]); imagecopy ($this->img["des"], $this->img["watermark"], $this->calc_position_H (), $this->calc_position_V (), 0, 0, $this->img["x_watermark"], $this->img["y_watermark"]); } imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $X_des, $Y_des, $this->img["x"], $this->img["y"]); @imagecopy ($this->img["des"], $this->img["watermark"], $this->calc_position_H (), $this->calc_position_V (), 0, 0, $this->img["x_watermark"], $this->img["y_watermark"]); if ($this->txt_watermark!='' ) { imagestring ( $this->img["des"], $this->txt_watermark_font, $this->calc_text_position_H() , $this->calc_text_position_V(), $this->txt_watermark, $txt_color); // $this->txt_watermark_color); } } $this->img["src"]=$this->img["des"]; $this->img["x"]= $this->img["x_thumb"]; $this->img["y"]= $this->img["y_thumb"]; } /** *Calculate JPEG quality factor for a specific size in bytes *@access public *@param integer maximun file size in bytes **/ function CalculateQFactor($size) { //based on: JPEGReducer class version 1, 25 November 2004, Author: huda m elmatsani, Email :justhuda@netscape.net //calculate size of each image. 75%, 50%, and 25% quality ob_start(); imagejpeg($this->img["des"],'',75); $buffer = ob_get_contents(); ob_end_clean(); $size75 = strlen($buffer); ob_start(); imagejpeg($this->img["des"],'',50); $buffer = ob_get_contents(); ob_end_clean(); $size50 = strlen($buffer); ob_start(); imagejpeg($this->img["des"],'',25); $buffer = ob_get_contents(); ob_end_clean(); $size25 = strlen($buffer); //calculate gradient of size reduction by quality $mgrad1 = 25/($size50-$size25); $mgrad2 = 25/($size75-$size50); $mgrad3 = 50/($size75-$size25); $mgrad = ($mgrad1+$mgrad2+$mgrad3)/3; //result of approx. quality factor for expected size $q_factor=round($mgrad*($size-$size50)+50); if ($q_factor<25) { $this->quality=25; } elseif ($q_factor>100) { $this->quality=100; } else { $this->quality=$q_factor; } } /** *@access private *@return integer **/ function calc_text_position_H () { $W_mark = imagefontwidth ($this->txt_watermark_font)*strlen($this->txt_watermark); $W = $this->img["x_thumb"]; switch ($this->txt_watermark_Haling) { case 'CENTER': $x = $W/2-$W_mark/2; break; case 'RIGHT': $x = $W-$W_mark-($this->txt_watermark_Hmargin); break; default: case 'LEFT': $x = 0+($this->txt_watermark_Hmargin); break; } return $x; } /** *@access private *@return integer **/ function calc_text_position_V () { $H_mark = imagefontheight ($this->txt_watermark_font); $H = $this->img["y_thumb"]; switch ($this->txt_watermark_Valing) { case 'CENTER': $y = $H/2-$H_mark/2; break; case 'BOTTOM': $y = $H-$H_mark-($this->txt_watermark_Vmargin); break; default: case 'TOP': $y = 0+($this->txt_watermark_Vmargin); break; } return $y; } /** *@access private *@return integer **/ function calc_position_H () { $W_mark = $this->img["x_watermark"]; $W = $this->img["x_thumb"]; switch ($this->img_watermark_Haling) { case 'CENTER': $x = $W/2-$W_mark/2; break; case 'RIGHT': $x = $W-$W_mark; break; default: case 'LEFT': $x = 0; break; } return $x; } /** *@access private *@return integer **/ function calc_position_V () { $H_mark = $this->img["y_watermark"]; $H = $this->img["y_thumb"]; switch ($this->img_watermark_Valing) { case 'CENTER': $y = $H/2-$H_mark/2; break; case 'BOTTOM': $y = $H-$H_mark; break; default: case 'TOP': $y = 0; break; } return $y; } /** *@access private *@return boolean **/ function checkgd2(){ // TEST the GD version if (extension_loaded('gd2') && function_exists('imagecreatetruecolor')) { return false; } else { return true; } } /** * Get which version of GD is installed, if any. * * Returns the version (1 or 2) of the GD extension. */ function gdVersion($user_ver = 0) { if (! extension_loaded('gd')) { return; } static $gd_ver = 0; // Just accept the specified setting if it's 1. if ($user_ver == 1) { $gd_ver = 1; return 1; } // Use the static variable if function was called previously. if ($user_ver !=2 && $gd_ver > 0 ) { return $gd_ver; } // Use the gd_info() function if possible. if (function_exists('gd_info')) { $ver_info = gd_info(); preg_match('/\d/', $ver_info['GD Version'], $match); $gd_ver = $match[0]; return $match[0]; } // If phpinfo() is disabled use a specified / fail-safe choice... if (preg_match('/phpinfo/', ini_get('disable_functions'))) { if ($user_ver == 2) { $gd_ver = 2; return 2; } else { $gd_ver = 1; return 1; } } // ...otherwise use phpinfo(). ob_start(); phpinfo(8); $info = ob_get_contents(); ob_end_clean(); $info = stristr($info, 'gd version'); preg_match('/\d/', $info, $match); $gd_ver = $match[0]; return $match[0]; } // End gdVersion() function imageCopyResampleBicubic($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) { $scaleX = ($src_w - 1) / $dst_w; $scaleY = ($src_h - 1) / $dst_h; $scaleX2 = $scaleX / 2.0; $scaleY2 = $scaleY / 2.0; $tc = imageistruecolor($src_img); for ($y = $src_y; $y < $src_y + $dst_h; $y++) { $sY = $y * $scaleY; $siY = (int) $sY; $siY2 = (int) $sY + $scaleY2; for ($x = $src_x; $x < $src_x + $dst_w; $x++) { $sX = $x * $scaleX; $siX = (int) $sX; $siX2 = (int) $sX + $scaleX2; if ($tc) { $c1 = imagecolorat($src_img, $siX, $siY2); $c2 = imagecolorat($src_img, $siX, $siY); $c3 = imagecolorat($src_img, $siX2, $siY2); $c4 = imagecolorat($src_img, $siX2, $siY); $r = (($c1 + $c2 + $c3 + $c4) >> 2) & 0xFF0000; $g = ((($c1 & 0xFF00) + ($c2 & 0xFF00) + ($c3 & 0xFF00) + ($c4 & 0xFF00)) >> 2) & 0xFF00; $b = ((($c1 & 0xFF) + ($c2 & 0xFF) + ($c3 & 0xFF) + ($c4 & 0xFF)) >> 2); imagesetpixel($dst_img, $dst_x + $x - $src_x, $dst_y + $y - $src_y, $r+$g+$b); } else { $c1 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY2)); $c2 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY)); $c3 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY2)); $c4 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY)); $r = ($c1['red'] + $c2['red'] + $c3['red'] + $c4['red'] ) << 14; $g = ($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) << 6; $b = ($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue'] ) >> 2; imagesetpixel($dst_img, $dst_x + $x - $src_x, $dst_y + $y - $src_y, $r+$g+$b); } } } } /** *generate a unique filename in a directory like prefix_filename_randon.ext *@access public *@param string path of the destination dir. Example '/img' *@param string name of the file to save. Example 'my_foto.jpg' *@param string [optional] prefix of the name Example 'picture' *@return string full path of the file to save. Exmaple '/img/picture_my_foto_94949.jpg' **/ function unique_filename ( $archive_dir , $filename , $file_prefix='') { // checkemaos if file exists $extension= strtolower( substr( strrchr($filename, ".") ,1) ); $name=str_replace(".".$extension,'',$filename); // only alfanumerics characters $string_tmp = $name; $name=''; while ($string_tmp!='') { $character=substr ($string_tmp, 0, 1); $string_tmp=substr ($string_tmp, 1); if (eregi("[abcdefghijklmnopqrstuvwxyz0-9]", $character)) { $name=$name.$character; } else { $name=$name.'_'; } } $destination = $file_prefix."_".$name.".".$extension; while (file_exists($archive_dir."/".$destination)) { // if exist, add a random number to the file name srand((double)microtime()*1000000); // random number inizializzation $destination = $file_prefix."_".$name."_".rand(0,999999999).".".$extension; } return ($destination); } /** * NOT USED : to do: mezclar imagenes a tamaņo original, preservar canal alpha y redimensionar * Merge multiple images and keep transparency * $i is and array of the images to be merged: * $i[1] will be overlayed over $i[0] * $i[2] will be overlayed over that * @param mixed * @retrun mixed the function returns the resulting image ready for saving **/ function imagemergealpha($i) { //create a new image $s = imagecreatetruecolor(imagesx($i[0]),imagesy($i[1])); //merge all images imagealphablending($s,true); $z = $i; while($d = each($z)) { imagecopy($s,$d[1],0,0,0,0,imagesx($d[1]),imagesy($d[1])); } //restore the transparency imagealphablending($s,false); $w = imagesx($s); $h = imagesy($s); for($x=0;$x<$w;$x++) { for($y=0;$y<$h;$y++) { $c = imagecolorat($s,$x,$y); $c = imagecolorsforindex($s,$c); $z = $i; $t = 0; while($d = each($z)) { $ta = imagecolorat($d[1],$x,$y); $ta = imagecolorsforindex($d[1],$ta); $t += 127-$ta['alpha']; } $t = ($t > 127) ? 127 : $t; $t = 127-$t; $c = imagecolorallocatealpha($s,$c['red'],$c['green'],$c['blue'],$t); imagesetpixel($s,$x,$y,$c); } } imagesavealpha($s,true); return $s; } } ?> Neolevel - Full Time Marketing - Despre Neolevel

"Multi primesc sfaturi, putini profita de ele" Publilius Sirius
Neolevel - Full Time Marketing
Neolevel - Full Time Marketing Home Companie Servicii Resurse BLOG CONTACT

home / companie / despre_neolevel /
Despre Neolevel


Cine suntem?
Suntem o echipa de profesionisti in marketing, cu experienta la client.
Ne-am format in companii care, la fel ca si clientii pe care ii vizam, nu aveau stabilita o activitate de marketing. Am construit in acele companiii, am creat sisteme, branduri, proceduri si am pus bazele unei activitati profesioniste de marketing.

Ne-am confruntat in munca noastra cu provocari legate de lipsa de resurse umane in perioade aglomerate, am avut de facut marketing cu bugete mici, am fost nevoiti sa alegem parteneri cu care sa lucram, sa organizam activitati. Am facut toate astea cu multa pasiune, multa munca si am avut succes.

Ne mandrim de fiecare data cand vedem cum treaba noastra se mentine pentru ani de zile, ca ceea ce noi am creat pentru companiile din care am facut parte a trecut proba timpului.

Am descoperit un talent, o pasiune si o capacitate de a pune bazele unor activitati din care companiile sa beneficieze atat pe termen scurt cat si pe termen lung. Stim cu ce probleme se confrunta firmele, caci ne-am confruntat si noi cu ele.

Dorinta noastra este sa pornim sisteme de marketing, comunicare si branding profesioniste in companii care isi dau seama de nevoia de a face marketing. Vrem sa ii invatam pe cei implicati ce inseamna de fapt marketingul si sa reducem distanta dintre marketing si managementul companiilor.  
Vom depune toate eforturile sa ajutam clientii sa obtina rezultate in vanzari si sa aiba o comunicare coerenta, corecta, focalizata si puternica pe termen lung.
 

Ce facem?

Rezolvam probleme de marketing. Serviciile noastre sunt dedicate problemelor concrete de marketing sau vanzari ale companiilor cliente.

Pornim de la situatia reala din companie si din piata, facem analiza necesara si propunem solutii pe care le discutam cu managementul firmei cliente. Ajutam compania sa implementeze solutiile prezentate si alese de catre management si  urmarim procesul in desfasurare.

Acolo unde se poate, ne invatam clientii cum se organizeaza un eveniment, cum se lucreaza cu presa, cum se alege agentia de publicitate, cum se scrie un text publicitar, sau orice alte tehnici de care vor avea nevoie in viitor.

Si nu ne oprim aici. Aplicam companiilor un tratament cu vitamine de marketing. Adica realizam elemente punctuale din procesul de marketing, care, folosite in vanzari si in promovare, au sansa sa revitalizeze afacerile sau sa dea un avant mai mare vanzarilor. De la realizarea unor pliante de promovare sau organizarea unor participari la targuri si expozitii, pana la instruirea personalului de vanzari, aceste elemente au un scop precis – sa creasca vanzarile facand comunicarea cu clientii mai usoara, mai simpla, mai profesionista, mai directa.


Principiile noastre de afaceri