2008-10-01 7 views
9

JavaScript 만 사용하여 여러 이미지를 단일 이미지로 결합하는 방법이 있는지 궁금합니다. 이것은 Canvas가 할 수있는 것입니다. 효과는 긍정적으로 수행 할 수 있지만 다운로드하여 단일 이미지로 결합 할 수 있습니까?JavaScript를 사용하여 여러 이미지를 하나의 이미지로 결합 할 수 있습니까?

업데이트 2008년 10월 1일 : 조언을

덕분에, 나는 누군가가 jQuery를 함께하는 JS/CSS를 전용 사이트 작업을 돕고 있었다 그들은 일부 맥 OS 독 - 같은 이미지 효과를 찾고 있었다 서로 겹치는 여러 이미지. 우리가 생각해 낸 해결책은 절대적으로 위치를 잡는 것이 었으며 부모에게 효과를 사용하는 것 <div>이 상대적으로 위치했습니다. 이미지를 결합하고 그 단일 이미지에 효과를 생성하는 것이 훨씬 쉬웠을 것입니다.

그런 다음 Picnik과 같은 온라인 이미지 편집기에 대해 생각해 보았고 자바 스크립트에서만 작성된 포토샵 기능이있는 브라우저 기반 이미지 편집기가 있는지 궁금합니다. 미래에 가능성이없는 것 같네요?

답변

14

나는 이것이 이전 질문이며 OP가 해결책을 찾았지만 이미지와 캔버스가 이미 HTML 페이지의 일부인 경우 작동합니다.

<img id="img1" src="imgfile1.png"> 
<img id="img2" src="imgfile2.png"> 
<canvas id="canvas"></canvas> 

<script type="text/javascript"> 
var img1 = document.getElementById('img1'); 
var img2 = document.getElementById('img2'); 
var canvas = document.getElementById('canvas'); 
var context = canvas.getContext('2d'); 

canvas.width = img1.width; 
canvas.height = img1.height; 

context.globalAlpha = 1.0; 
context.drawImage(img1, 0, 0); 
context.globalAlpha = 0.5; //Remove if pngs have alpha 
context.drawImage(img2, 0, 0); 
</script> 

또는, 당신은 즉석에서 이미지를로드 할 경우 :이 항목과 각각의 거대한 양을 때

<canvas id="canvas"></canvas> 
<script type="text/javascript"> 
var canvas = document.getElementById('canvas'); 
var context = canvas.getContext('2d'); 
Image img1 = new Image(); 
Image img2 = new Image(); 

img1.onload = function() { 
    canvas.width = img1.width; 
    canvas.height = img1.height; 
    img2.src = 'imgfile2.png'; 
}; 
img2.onload = function() { 
    context.globalAlpha = 1.0; 
    context.drawImage(img1, 0, 0); 
    context.globalAlpha = 0.5; //Remove if pngs have alpha 
    context.drawImage(img2, 0, 0); 
};   

img1.src = 'imgfile1.png'; 
</script> 
3

클라이언트 측 javascript ("다운로드 할 단일 이미지로 빗질"할 수 있음)를 클라이언트에서 실행할 수 있기 때문에 그렇게 할 수 없다고 생각합니다. 하나의 이미지로 결합 할 수 있다고하더라도 이미지 파일을 클라이언트에 올리면 이미 개별 이미지를 모두 다운로드 했으므로 병합은 무의미합니다.

+0

나도 같은 솔루션을 찾고있었습니다, 그냥 이해가 말씀을 전합니다 그 중 T 셔츠 (색상) 또는 디지털 포스터 (배경색)와 같은 사용자 지정 옵션이 두 개 이상 있습니다. 이렇게하면 항목을 나열하는 데 많은 시간을 절약 할 수 있습니다. – bard

-1

두 세트의 JPG 인 경우 양방향으로 8의 배수로 사용자가 제어 할 수 있습니다. 이는 픽셀 블록을 재구성하는 레코딩을 필요로하지 않습니다.

0

글쎄, 문제는 자바 스크립트에서 '다운로드'할 수 없다는 것인데, 자바 스크립트가 클라이언트에서 실행되고 서버에서 다운로드하기 때문에 의미가 없습니다. 당신은 당신이 달성하려고 노력하고있는 것을 최종 목표로 말할 수 있습니까? 우리는 더 나은 제안을 내놓을 수 있습니다.

3

이 용도로 Pixastic을 사용할 수 있습니다. 블렌드 예제는 다음과 같습니다.

+0

은 1/2016 현재 404입니다. –

+1

@ElonZito - GitHub의 Pixastic 코드는 다음과 같습니다. [https://github.com/jseidelin/pixastic](https://github.com/jseidelin/pixastic)하지만 마지막 업데이트 3 년 전. – Roberto

관련 문제