2010-10-06 79 views
56

Tôi đang cố hợp nhất hai hình ảnh cùng với PHP.Hợp nhất hai hình ảnh với PHP

Ví dụ ... làm cách nào để tôi đặt một hình ảnh lên trên hình ảnh hai hoặc hợp nhất, với PHP cơ bản? Tôi đã thử một cái gì đó như watermarking, nhưng nó không có vẻ là làm việc.

Hình ảnh Một

alt text

Hình ảnh Hai

alt text

... và có nó biến thành này? KẾT QUẢ CUỐI CÙNG:

alt text

+0

chỉ hiển thị hoặc yu cố gắng để tạo ra hình ảnh – zod

+0

Nếu watermark đang làm việc, nhưng không đưa ra kết quả như bạn mong muốn, tâm quanh co của tôi là suy nghĩ về sự kết hợp của 3 hình ảnh. hình ảnh đầu tiên là một hình ảnh trắng trống, u hợp nhất hình ảnh đầu tiên bên trái và hình ảnh thứ hai ở phía bên phải. Tôi biết viết mã sẽ không dễ dàng như gửi bình luận. Chỉ cần bình luận những gì cam ein tâm trí của tôi – zod

+1

là bạn chắc chắn bạn cần php? bạn có thể dễ dàng css nó – devcline

Trả lời

2

Sử dụng thư viện GD hoặc ImageMagick. Tôi googled 'PHP GD hình ảnh hợp nhất' và có một số bài viết về việc này. Trong quá khứ những gì tôi đã làm là tạo ra một hình ảnh trống lớn, và sau đó sử dụng imagecopymerge() để dán những hình ảnh vào một trống ban đầu của tôi. Kiểm tra các bài viết trên google bạn sẽ tìm thấy một số mã nguồn bạn có thể bắt đầu sử dụng ngay lập tức.

0

Bạn có thể thực hiện việc này với tiện ích mở rộng ImageMagick. Tôi đoán rằng phương thức combinedImages() sẽ làm những gì bạn muốn.

1

Thư viện thao tác hình ảnh GD trong PHP có lẽ là cách tốt nhất để làm việc với hình ảnh trong PHP. Hãy thử một trong các chức năng tưởng tượng (imagecopy, imagecopymerge, ...). Mỗi người trong số họ kết hợp 2 hình ảnh theo những cách khác nhau. Xem php documentation on imagecopy để biết thêm thông tin.

98

Tôi đã làm cho nó hoạt động từ cái tôi đã tạo.

<?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); 
?> 
+2

Hoạt động trên hình ảnh có độ trong suốt. – Homework

21

Câu hỏi về cách hợp nhất hai hình ảnh, tuy nhiên trong trường hợp được chỉ định này, bạn không nên làm như vậy. Bạn nên đặt Hình ảnh nội dung (ví dụ: bìa) vào thẻ <img />Hình ảnh kiểu thành CSS, tại sao?

  1. Như tôi đã nói bìa thuộc nội dung của tài liệu, trong khi đó bản ghi vinyl và bóng tối chỉ là một phần của phong cách trang.
  2. Việc tách biệt này thuận tiện hơn nhiều khi sử dụng. Người dùng có thể dễ dàng sao chép hình ảnh đó. Việc lập chỉ mục bằng trình thu thập dữ liệu web dễ dàng hơn.
  3. Cuối cùng, việc duy trì dễ dàng hơn nhiều.

Vì vậy, sử dụng một mã rất đơn giản:

<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; 
} 
+2

Cảm ơn vì điều này, nhưng tôi đã yêu cầu PHP. Vẫn sẽ cứu cái này. – Homework

+1

Đúng. Nó dễ dàng hơn cho máy chủ bởi vì nó không phải xử lý tất cả các hình ảnh. Và nó cũng nhanh hơn cho người dùng bởi vì nó không có một phần của hình ảnh với vinyl tất cả các thời gian. –

+2

Câu trả lời được chọn rất thú vị vì chúng ta có thể kết hợp hai hình ảnh và chia sẻ trên facebook. –

2

ImageArtist là một gd wrapper tinh khiết là tác giả của tôi, điều này cho phép bạn thực hiện thao tác hình ảnh phức tạp trở nên đơn giản, đối với giải pháp câu hỏi của bạn có thể được thực hiện bằng rất vài bước sử dụng thư viện mạnh mẽ này.

đây là mã mẫu.

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

Đây là kết quả của tôi.

enter image description here

+0

Tuyệt vời! Cảm ơn bạn. – Homework

Các vấn đề liên quan