[вопрос] php. наложение картинок.

Discussion in 'PHP' started by life_is_shit, 4 Apr 2008.

  1. life_is_shit

    life_is_shit Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    300
    Likes Received:
    149
    Reputations:
    19
    Товарищи ачатовцы=)
    Столкнулся с задачей, которую не могу пока что решить.

    Суть: Есть две картинки. Первая определенного размера (например 200*200), вторая нет (т.е. может быть как больше так и меньше первой картинки). нужно уменьшить/увеличить вторую картинку до определенного размера (например 100*100) и наложить на первую по центру.

    Как это можно реализовать на php??? Очень надо помогите плз, плюсом не обижу.
     
    3 people like this.
  2. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    вот с аплоадом:
    PHP:
    <?php
    if(isset($_POST['go']))
    {
        
    $file1= $_FILES['file1']['tmp_name']; # 200*200
        
    $file2= $_FILES['file2']['tmp_name'];
        
    $image1 = ImageCreateFromJPEG($file1);

        function 
    resize($image, $new_width, $new_height, $target) { # Функция ресайза картинки
            
    if (file_exists($image))
            {
                
    $image = ImageCreateFromJPEG($image);
                
    $width = ImagesX($image);
                
    $height = ImagesY($image);
                
    $thumb = ImageCreateTrueColor($new_width,$new_height);
                
    ImageCopyResampled($thumb, $image, 0,0,0,0, $new_width, $new_height, $width, $height);
                
    ImageJPEG($thumb, $target, 100);
                
    ImageDestroy($image);
            }
        }

        
    resize($file2, 100, 100, '2_resized.jpg'); # Ресайзим вторую картинку
        
    $image2 = ImageCreateFromJPEG('2_resized.jpg');
        
    ImageCopyMerge($image1, $image2, ceil(ImagesX($image1)/4), ceil(ImagesY($image1)/4), 0, 0, ImagesX($image2), ImagesY($image2), 100);

        
    ImageJPEG($image1, '3.jpg', 100); # Сохраняем готовую картинку
        
    ImageDestroy($image1);
        
    ImageDestroy($image2);
    }
    else
    {
         echo 
    '<form method="post" enctype="multipart/form-data">
          <input type="file" name="file1"><br> 
          <input type="file" name="file2"><br> 
          <input type="submit" name="go" value="Загрузить"><br>
          </form>'
    ;
    }
    ?> 
     
    5 people like this.
  3. life_is_shit

    life_is_shit Elder - Старейшина

    Joined:
    21 Aug 2007
    Messages:
    300
    Likes Received:
    149
    Reputations:
    19
    это то что нужно, спасибо за помощь=)
     
    2 people like this.
  4. ultimatum

    ultimatum Elder - Старейшина

    Joined:
    28 Apr 2007
    Messages:
    142
    Likes Received:
    65
    Reputations:
    -13
    также стоило бы добавить фильтр на расширение картинки, что на стороне сервера и на стороне клиента клиента.На стороне клиента необязательно в принципе, Например , если картинку заливают с расширением *.php, то сервер бы отфильтровал бы это и вместо отрицательново ответа написал бы , что картинка успешна загруженна. Это бы сбила бы с толку делетантов , прада не надолго. Написал бы код , да в нём не силен на столько (
     
    #4 ultimatum, 16 Apr 2008
    Last edited: 16 Apr 2008