[вопрос] 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$image0,0,0,0$new_width$new_height$width$height);
                
    ImageJPEG($thumb$target100);
                
    ImageDestroy($image);
            }
        }

        
    resize($file2100100'2_resized.jpg'); # Ресайзим вторую картинку
        
    $image2 ImageCreateFromJPEG('2_resized.jpg');
        
    ImageCopyMerge($image1$image2ceil(ImagesX($image1)/4), ceil(ImagesY($image1)/4), 00ImagesX($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