Объединение изображений переднего и заднего плана [dубликат]

Боюсь, что нет. Snaps-файлы доступны только в Ubuntu 16.04 и мгновенном Ubuntu Core 16 (и мгновенном Ubuntu Core 15.04, но привязки менялись с тех пор).

Предполагаю, что у вас нет патчей для нового (xenial) ядра?

Обновление от 01/31/17: snapd и его зависимости теперь доступны в 14.04, что означает, что теперь привязки теперь могут выполняться 14.04.

61
задан 7 October 2010 в 00:48

7 ответов

Вы можете сделать это с расширением ImageMagick. Я предполагаю, что метод combImages () будет делать то, что вы хотите.

1
ответ дан 15 August 2018 в 16:52

Вопрос о слиянии двух изображений, однако в этом конкретном случае вы не должны этого делать. Вы должны поместить Content Image (т. Е. Обложку) в тег <img /> и стиль в CSS, почему?

Как я уже сказал, обложка относится к содержимому документа, тогда как виниловая запись и тень являются лишь частью стилей страниц. Такое разделение гораздо удобнее в использовании. Пользователь может легко скопировать это изображение. Легче индексировать веб-пауки. Наконец, его намного проще поддерживать.

Так что используйте очень простой код:

<div class="cover">
   <img src="/content/images/covers/movin-mountains.png" alt="Moving mountains by Pneuma" width="100" height="100" />
</div>

.cover {
    padding: 10px;
    padding-right: 100px;

    background: url(/style/images/cover-background.png) no-repeat;
}
21
ответ дан 15 August 2018 в 16:52
  • 1
    Спасибо за это, но я попросил PHP. Все еще собираюсь сохранить это. – Homework 7 October 2010 в 05:57
  • 2
    Правда. Его проще для сервера, потому что он не должен обрабатывать все изображения. И это также быстрее для пользователя, потому что он не имеет части изображения с винилом все время. – Nicky Smits 8 March 2014 в 23:45
  • 3
    Выбранный ответ интересен тем, что мы можем смешивать два изображения и делиться ими на facebook. – Fabio Montefuscolo 31 May 2016 в 04:49
  • 4
    CSS работает только в том случае, если изображения должны использоваться на веб-сайте. Изображения, которые будут доступны в социальных сетях, загруженные пользователями и т. Д., Не могут быть созданы с использованием CSS. – Sherwin Flight 19 November 2016 в 06:17
  • 5
    Может ли кто-нибудь помочь мне, мне нужно сохранить изображение после слияния. Возможно ли это, написав html. – Rahul Vats 26 July 2017 в 11:13

Я получил его от одного из них.

<?php
$dest = imagecreatefrompng('vinyl.png');
$src = imagecreatefromjpeg('cover2.jpg');

imagealphablending($dest, false);
imagesavealpha($dest, true);

imagecopymerge($dest, $src, 10, 9, 0, 0, 181, 180, 100); //have to play with these numbers for it to work for you, etc.

header('Content-Type: image/png');
imagepng($dest);

imagedestroy($dest);
imagedestroy($src);
?>
104
ответ дан 15 August 2018 в 16:52

ImageArtist - это чистая gd-оболочка, созданная мной, это позволяет вам делать сложные манипуляции с изображениями безумно легко, потому что ваше решение вопроса может быть выполнено с помощью очень небольшого количества шагов с использованием этой мощной библиотеки.

здесь образец кода.

$img1 = new Image("./cover.jpg");
$img2 = new Image("./box.png");
$img2->merge($img1,9,9);
$img2->save("./merged.png",IMAGETYPE_PNG);

Вот как выглядит мой результат.

ImageArtist

5
ответ дан 15 August 2018 в 16:52

Библиотека GD Image Manipulation Library в PHP, вероятно, лучше всего подходит для работы с изображениями на PHP. Попробуйте одну из функций imagecopy (imagecopy, imagecopymerge, ...). Каждый из них объединяет 2 изображения по-разному. Дополнительную информацию см. В документации php на imagecopy.

1
ответ дан 15 August 2018 в 16:52

Вы можете попробовать мою функцию для слияния изображений по горизонтали или по вертикали без изменения отношения изображения. просто скопировать пасту будет работать.

function merge($filename_x, $filename_y, $filename_result, $mergeType = 0) {

    //$mergeType 0 for horizandal merge 1 for vertical merge

 // Get dimensions for specified images
 list($width_x, $height_x) = getimagesize($filename_x);
 list($width_y, $height_y) = getimagesize($filename_y);


$lowerFileName = strtolower($filename_x); 
if(substr_count($lowerFileName, '.jpg')>0 || substr_count($lowerFileName, '.jpeg')>0){
    $image_x = imagecreatefromjpeg($filename_x);    
}else if(substr_count($lowerFileName, '.png')>0){
    $image_x = imagecreatefrompng($filename_x); 
}else if(substr_count($lowerFileName, '.gif')>0){
    $image_x = imagecreatefromgif($filename_x); 
}


$lowerFileName = strtolower($filename_y); 
if(substr_count($lowerFileName, '.jpg')>0 || substr_count($lowerFileName, '.jpeg')>0){
    $image_y = imagecreatefromjpeg($filename_y);    
}else if(substr_count($lowerFileName, '.png')>0){
    $image_y = imagecreatefrompng($filename_y); 
}else if(substr_count($lowerFileName, '.gif')>0){
    $image_y = imagecreatefromgif($filename_y); 
}


if($mergeType==0){
    //for horizandal merge
     if($height_y<$height_x){
        $new_height = $height_y;

        $new_x_height = $new_height;
        $precentageReduced = ($height_x - $new_height)/($height_x/100);
        $new_x_width = ceil($width_x - (($width_x/100) * $precentageReduced));

         $tmp = imagecreatetruecolor($new_x_width, $new_x_height);
        imagecopyresampled($tmp, $image_x, 0, 0, 0, 0, $new_x_width, $new_x_height, $width_x, $height_x);
        $image_x = $tmp;

        $height_x = $new_x_height;
        $width_x = $new_x_width;

     }else{
        $new_height = $height_x;

        $new_y_height = $new_height;
        $precentageReduced = ($height_y - $new_height)/($height_y/100);
        $new_y_width = ceil($width_y - (($width_y/100) * $precentageReduced));

         $tmp = imagecreatetruecolor($new_y_width, $new_y_height);
        imagecopyresampled($tmp, $image_y, 0, 0, 0, 0, $new_y_width, $new_y_height, $width_y, $height_y);
        $image_y = $tmp;

        $height_y = $new_y_height;
        $width_y = $new_y_width;

     }

     $new_width = $width_x + $width_y;

     $image = imagecreatetruecolor($new_width, $new_height);

    imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x);
    imagecopy($image, $image_y, $width_x, 0, 0, 0, $width_y, $height_y);

}else{


    //for verical merge
    if($width_y<$width_x){
        $new_width = $width_y;

        $new_x_width = $new_width;
        $precentageReduced = ($width_x - $new_width)/($width_x/100);
        $new_x_height = ceil($height_x - (($height_x/100) * $precentageReduced));

        $tmp = imagecreatetruecolor($new_x_width, $new_x_height);
        imagecopyresampled($tmp, $image_x, 0, 0, 0, 0, $new_x_width, $new_x_height, $width_x, $height_x);
        $image_x = $tmp;

        $width_x = $new_x_width;
        $height_x = $new_x_height;

     }else{
        $new_width = $width_x;

        $new_y_width = $new_width;
        $precentageReduced = ($width_y - $new_width)/($width_y/100);
        $new_y_height = ceil($height_y - (($height_y/100) * $precentageReduced));

         $tmp = imagecreatetruecolor($new_y_width, $new_y_height);
        imagecopyresampled($tmp, $image_y, 0, 0, 0, 0, $new_y_width, $new_y_height, $width_y, $height_y);
        $image_y = $tmp;

        $width_y = $new_y_width;
        $height_y = $new_y_height;

     }

     $new_height = $height_x + $height_y;

     $image = imagecreatetruecolor($new_width, $new_height);

    imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x);
    imagecopy($image, $image_y, 0, $height_x, 0, 0, $width_y, $height_y);

}





$lowerFileName = strtolower($filename_result); 
if(substr_count($lowerFileName, '.jpg')>0 || substr_count($lowerFileName, '.jpeg')>0){
    imagejpeg($image, $filename_result);
}else if(substr_count($lowerFileName, '.png')>0){
    imagepng($image, $filename_result);
}else if(substr_count($lowerFileName, '.gif')>0){
    imagegif($image, $filename_result); 
}


 // Clean up
 imagedestroy($image);
 imagedestroy($image_x);
 imagedestroy($image_y);

}


merge('images/h_large.jpg', 'images/v_large.jpg', 'images/merged_har.jpg',0); //merge horizontally
merge('images/h_large.jpg', 'images/v_large.jpg', 'images/merged.jpg',1); //merge vertically
0
ответ дан 15 August 2018 в 16:52

Используйте библиотеку GD или ImageMagick. Я googled 'PHP GD слияние изображений' и получил несколько статей об этом. В прошлом то, что я сделал, это создать большое пустое изображение, а затем использовать imagecopymerge (), чтобы вставить эти изображения в мою первоначальную пустую. Просмотрите статьи в Google, вы найдете исходный код, который вы можете сразу начать использовать.

2
ответ дан 15 August 2018 в 16:52

Другие вопросы по тегам:

Похожие вопросы: