Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите с обработкой изображений
Форумы портала PHP.SU » » Графика в PHP » Помогите с обработкой изображений

Страниц (1): [1]
 

1. kimor - 09 Декабря, 2011 - 15:27:17 - перейти к сообщению
Попробуйте пожалуйста помочь с кодом PHP для обработки изображения:
1. Есть код:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. eader("Content-Type: image/png");
  3. Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  4. Header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  5. Header("Cache-Control: no-store, no-cache, must-revalidate");
  6. Header("Cache-Control: post-check=0, pre-check=0", false);
  7. Header("Pragma: no-cache");
  8.  
  9. $aaa=imagecreatefromPng("C:/pic/12345.png");
  10.  
  11. // Вот тут перед выводом я хочу обработать изображение  в переменной $aaa с помощью классов и функций,
  12. //приведенных ниже:
  13. // И вот тут вопрос как мне передать это изображение в Image_PixelOperations() никак не разберусь, если возможно помогите.
  14.  
  15. ImagePng($aaa);
  16.  



CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. class Image_PixelOperations {
  3.          
  4.     function pixelOperation(
  5.             $input_image,
  6.             $output_image,
  7.             $operation_callback,
  8.             $factor = false
  9.             )
  10.     {
  11.          
  12.         $image = imagecreatefrompng($input_image);
  13.         $x_dimension = imagesx($image);
  14.         $y_dimension = imagesy($image);
  15.         $new_image = imagecreatetruecolor($x_dimension, $y_dimension);
  16.          
  17.         if ($operation_callback == 'contrast') {
  18.             $average_luminance = $this->getAverageLuminance($image);
  19.         } else {
  20.             $average_luminance = false;
  21.         }
  22.          
  23.         for ($x = 0; $x < $x_dimension; $x++) {
  24.            for ($y = 0; $y < $y_dimension; $y++) {
  25.        
  26.                $rgb = imagecolorat($image, $x, $y);
  27.                $r = ($rgb >> 16) & 0xFF;
  28.                 $g = ($rgb >> 8) & 0xFF;
  29.                 $b = $rgb & 0xFF;
  30.          
  31.                 $pixel = new Pixel($r, $g, $b);
  32.                 $pixel = call_user_func(
  33.                     $operation_callback,
  34.                     $pixel,
  35.                     $factor,
  36.                     $average_luminance
  37.                 );
  38.          
  39.                 $color = imagecolorallocate(
  40.                     $image,
  41.                     $pixel->r,
  42.                     $pixel->g,
  43.                     $pixel->b
  44.                 );
  45.                 imagesetpixel($new_image, $x, $y, $color);
  46.             }
  47.          
  48.         }
  49.          
  50.         imagepng($new_image, $output_image);
  51.     }
  52. }
  53.  
  54. class Pixel {
  55.     function Pixel($r, $g, $b)
  56.     {
  57.         $this->r = ($r > 255) ? 255 : (($r < 0) ? 0 : (int)($r));
  58.        $this->g = ($g > 255) ? 255 : (($g < 0) ? 0 : (int)($g));
  59.        $this->b = ($b > 255) ? 255 : (($b < 0) ? 0 : (int)($b));
  60.    }
  61. }
  62.  
  63.  function addNoise($pixel, $factor)
  64.    {
  65.        $random = mt_rand(-$factor, $factor);
  66.        return new Pixel(
  67.                    $pixel->r + $random,
  68.                     $pixel->g + $random,
  69.                     $pixel->b + $random
  70.                 );
  71.     }
  72.  
2. CrazyOne - 18 Мая, 2012 - 11:54:16 - перейти к сообщению
1. Все приведённые тобой куски кода должны быть в одном файле, если в разных то нужно подключить их.
2. У тебя есть класс Image_PixelOperations, у которого есть метод pixelOperation. Чтобы передать изображение туда:
PHP:
скопировать код в буфер обмена
  1. Image_PixelOperations::pixelOperation($input_image, $output_image, $operation_callback, $factor = false);

Как видишь этот метод должен получить как минимум три параметра.
В этом коде:
$input_image - это твоё исходное изображение ($aaa), $output_image - изображение на выходе(после обработки), $operation_callback - это какая-то муть, обьяснить немогу.

 

Powered by ExBB FM 1.0 RC1