Changeset 12851 for trunk/admin/include/image.class.php
- Timestamp:
- Jan 5, 2012, 10:35:25 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/admin/include/image.class.php
r12756 r12851 42 42 43 43 function resize($width, $height); 44 45 function sharpen($amount); 46 47 function compose($overlay, $x, $y, $opacity); 44 48 45 49 function write($destination_filepath); … … 257 261 258 262 return $rotation; 263 } 264 265 /** Returns a normalized convolution kernel for sharpening*/ 266 static function get_sharpen_matrix($amount) 267 { 268 // Amount should be in the range of 18-10 269 $amount = round(abs(-18 + ($amount * 0.08)), 2); 270 271 $matrix = array 272 ( 273 array(-1, -1, -1), 274 array(-1, $amount, -1), 275 array(-1, -1, -1), 276 ); 277 278 $norm = array_sum(array_map('array_sum', $matrix)); 279 280 for ($i=0; $i<3; $i++) 281 { 282 $line = & $matrix[$i]; 283 for ($j=0; $j<3; $j++) 284 $line[$j] /= $norm; 285 } 286 287 return $matrix; 259 288 } 260 289 … … 398 427 } 399 428 429 function sharpen($amount) 430 { 431 $m = pwg_image::get_sharpen_matrix($amount); 432 return $this->image->convolveImage($m); 433 } 434 435 function compose($overlay, $x, $y, $opacity) 436 { 437 // todo 438 return false; 439 } 440 400 441 function write($destination_filepath) 401 442 { … … 416 457 var $commands = array(); 417 458 418 function __construct($source_filepath, $imagickdir='') 419 { 459 function __construct($source_filepath) 460 { 461 global $conf; 420 462 $this->source_filepath = $source_filepath; 421 $this->imagickdir = $ imagickdir;422 423 $command = $ imagickdir.'identify -format "%wx%h" "'.realpath($source_filepath).'"';463 $this->imagickdir = $conf['ext_imagick_dir']; 464 465 $command = $this->imagickdir.'identify -format "%wx%h" "'.realpath($source_filepath).'"'; 424 466 @exec($command, $returnarray); 425 467 if(!is_array($returnarray) or empty($returnarray[0]) or !preg_match('/^(\d+)x(\d+)$/', $returnarray[0], $match)) 426 468 { 427 die("[External ImageMagick] Corrupt image ");469 die("[External ImageMagick] Corrupt image\n" . var_export($returnarray, true)); 428 470 } 429 471 … … 477 519 $this->add_command('filter', 'Lanczos'); 478 520 $this->add_command('resize', $width.'x'.$height.'!'); 521 return true; 522 } 523 524 function sharpen($amount) 525 { 526 $m = pwg_image::get_sharpen_matrix($amount); 527 528 $param ='convolve "'.count($m).':'; 529 foreach ($m as $line) 530 { 531 $param .= ' '; 532 $param .= implode(',', $line); 533 } 534 $param .= '"'; 535 $this->add_command('morphology', $param); 536 return true; 537 } 538 539 function compose($overlay, $x, $y, $opacity) 540 { 541 $param = 'compose dissolve -define compose:args='.$opacity; 542 $param .= ' '.escapeshellarg(realpath($overlay->image->source_filepath)); 543 $param .= ' -gravity NorthWest -geometry +'.$x.'+'.$y; 544 $param .= ' -composite'; 545 $this->add_command($param); 479 546 return true; 480 547 } … … 497 564 $exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"'; 498 565 @exec($exec, $returnarray); 566 567 //echo($exec); 499 568 return is_array($returnarray); 500 569 } … … 612 681 } 613 682 683 function sharpen($amount) 684 { 685 $m = pwg_image::get_sharpen_matrix($amount); 686 return imageconvolution($this->image, $m, 1, 0); 687 } 688 689 function compose($overlay, $x, $y, $opacity) 690 { 691 $ioverlay = $overlay->image->image; 692 /* A replacement for php's imagecopymerge() function that supports the alpha channel 693 See php bug #23815: http://bugs.php.net/bug.php?id=23815 */ 694 695 $ow = imagesx($ioverlay); 696 $oh = imagesy($ioverlay); 697 698 // Create a new blank image the site of our source image 699 $cut = imagecreatetruecolor($ow, $oh); 700 701 // Copy the blank image into the destination image where the source goes 702 imagecopy($cut, $this->image, 0, 0, $x, $y, $ow, $oh); 703 704 // Place the source image in the destination image 705 imagecopy($cut, $ioverlay, 0, 0, 0, 0, $ow, $oh); 706 imagecopymerge($this->image, $cut, $x, $y, 0, 0, $ow, $oh, $opacity); 707 return true; 708 } 709 614 710 function write($destination_filepath) 615 711 {
Note: See TracChangeset
for help on using the changeset viewer.