2010-05-17 2 views
3

저는 다양한 크기로 작품을 업로드하고 판매 할 수있는 웹 사이트를 만들고 있습니다. 다른 파일 크기를 자동으로 처리하는 것이 가장 좋은 방법인지 궁금합니다. 나는 동적으로 비례 크기로 이미지 크기를 다시 할 수 있습니다 같은 방법으로 다른 크기의 범주 (대형 소형, 중형을)를 정의하는 방법다른 작품을 판매하는 웹 사이트에서 작업하고 있는데, 다른 이미지 크기를 처리하는 가장 좋은 방법은 무엇입니까?

  • : 몇 가지 포인트 나에 호기심이었다.

  • 다운로드 할 때 다른 크기의 실제 jpeg를 저장해야합니까? 또는 다른 크기를 생성하여 다운로드하는 것이 더 쉬울 수 있습니까?

  • 내 워터 마크가 오버레이되는 두 번째 '미리보기 이미지'를 저장해야합니까? 내 축소판이 평균 미리보기보다 약간 클 것입니까? 또는 다시 한 번 비행 중에 이것을 생성합니까?

모든 의견, 훌륭한 의견에 감사드립니다.

답변

2

나는 aarongriffin.co.uk과 같이합니다.

일부 이미지는 처음 요청되었을 때 즉시 크기가 조정 된 다음 저장됩니다. 다른 것들은 업로드시 생성됩니다. 업로드 시간에 그룹으로 요청되는 경향이있는 이미지 (예 : 미리보기 이미지)가 생성되며 한 번에 하나씩 표시되는 경향이있는 이미지가 즉시 생성됩니다. 이것은 나를 위해 잘 작동하지만 너무 많은 트래픽이없는 사이트입니다.

저는 파이썬과 장고에서 일하고 있습니다. 그래서 저는 이것을 위해 sorl-thumbnail을 사용합니다. PHP에서는 똑같은 일을하는 다양한 imagecreatefrom * 함수에 액세스 할 수 있습니다.

워터 마크가있는 버전의 사진을 생성하고 (특정 앨범에 워터 마크를 삽입해야하는 경우), 워터 마킹되지 않은 사본 대신 해당 사진을 저장합니다.

1

PHP 미리보기를 확인할 수 있습니다. 다음은 유용한 코드 조각입니다.

<?php 
# Constants 
define(IMAGE_BASE, '/var/www/html/mbailey/images'); 
define(MAX_WIDTH, 150); 
define(MAX_HEIGHT, 150); 

# Get image location 
$image_file = str_replace('..', '', $_SERVER['QUERY_STRING']); 
$image_path = IMAGE_BASE . "/$image_file"; 

# Load image 
$img = null; 
$ext = strtolower(end(explode('.', $image_path))); 
if ($ext == 'jpg' || $ext == 'jpeg') { 
    $img = @imagecreatefromjpeg($image_path); 
} else if ($ext == 'png') { 
    $img = @imagecreatefrompng($image_path); 
# Only if your version of GD includes GIF support 
} else if ($ext == 'gif') { 
    $img = @imagecreatefrompng($image_path); 
} 

# If an image was successfully loaded, test the image for size 
if ($img) { 

    # Get image size and scale ratio 
    $width = imagesx($img); 
    $height = imagesy($img); 
    $scale = min(MAX_WIDTH/$width, MAX_HEIGHT/$height); 

    # If the image is larger than the max shrink it 
    if ($scale &lt; 1) { 
     $new_width = floor($scale*$width); 
     $new_height = floor($scale*$height); 

     # Create a new temporary image 
     $tmp_img = imagecreatetruecolor($new_width, $new_height); 

     # Copy and resize old image into new image 
     imagecopyresized($tmp_img, $img, 0, 0, 0, 0, 
         $new_width, $new_height, $width, $height); 
     imagedestroy($img); 
     $img = $tmp_img; 
    } 
} 

# Create error image if necessary 
if (!$img) { 
    $img = imagecreate(MAX_WIDTH, MAX_HEIGHT); 
    imagecolorallocate($img,0,0,0); 
    $c = imagecolorallocate($img,70,70,70); 
    imageline($img,0,0,MAX_WIDTH,MAX_HEIGHT,$c2); 
    imageline($img,MAX_WIDTH,0,0,MAX_HEIGHT,$c2); 
} 

# Display the image 
header("Content-type: image/jpeg"); 
imagejpeg($img); 
?> 
+0

너비/높이를 비례로 유지합니까? ... 내 말은, max_height와 max_width가 한 문장으로 설정된다면 이미지가 왜곡되는 것을 막기 위해 미리 치수를 알아야한다는 것입니다. – ThinkingInBits

+0

해야합니다 .. max_height 및 max_width는 크기 조정/크기 조정 된 이미지 용입니다. – Hanseh

관련 문제