2013-04-07 2 views
1

나는 사용자가 이미지를 제출할 수 있도록 Wordpress를 사용하는 경쟁 웹 사이트를 운영하고 있습니다. 최대 6 개의 이미지가 포함 된 700 개 이상의 항목이 있으며 각 이미지의 최대 파일 크기는 3MB입니다.즉시 화질 줄이고 낮은 품질의 버전 표시

나는 모든 게시물을 게시물로 나열한 다음 각 게시물에 이미지를 표시합니다.

각각의 이미지를 사용하여 표시됩니다 the_field('image1');, the_field('image2');, the_field('image3');

내가 가진 문제는 페이지가 다음 3메가바이트의 한 번에 6 개 이미지를로드하려고하는 것입니다. 즉석에서 이미지를 최적화하고 50 % 품질로 표시하는 방법이 있습니까?

+1

일반적인 웹 이미지는 150k를 초과 할 수 없습니다. 3Mb는 어디서 얻었습니까? –

+0

@YourCommonSense 나는 대답하는 방법을 모르겠다 - 업로드 한 사람이 3MB이고, Wordpress의 업로드 섹션에있는 파일이 3MB이고, 페이지에 표시되고 다운로드 한 파일이 3MB이다. – Rob

답변

3

다른 임시 파일을 만들지 않고 데이터베이스 (또는 파일)에서 압축을 풀면 즉시 크기를 조절할 수 있습니다. 데이터베이스에서 이미지를 가져 오는 URL이 있다고 가정합니다. 당신이 imagejpeg에 파일 이름으로 NULL을 전달하면

$pdo = new PDO("somewhere"); 
$sql = "SELECT image_data FROM pictures WHERE id=1"; 

$stmt = $pdo->query($sql); 
$obj = $stmt->fetch(PDO::FETCH_OBJ); 

$img = imagecreatefromstring($obj->image_data); 

header('Content-Type: image/jpeg'); 
imagejpeg($img, NULL, 50); 

imagedestroy($img); 

이 표준에 JPEG를 기록합니다. 세 번째 매개 변수는 품질 수준이며이 경우 50 %입니다.

-1

즉석에서 이미지의 크기를 조정할 수있는 방법은 없습니다. 이러한 서비스 거부 (DoS) 공격으로 CPU 초크를 만들 수있는 유일한 방법이 있습니다.

이미지는 업로드 직후 적절한 크기와 품질로 사전 크기 조정되어야합니다. 세계의 모든 웹 사이트는 이런 방식으로 작동합니다.

+0

페이지를로드하면 글자 그대로 문제가 발생하여 천천히로드되는 이미지를 볼 수 있습니다. 확실히 3MB입니다. – Rob

0

이미지가 업로드되면 2 개의 이미지를 저장할 수 있습니다. 1. 원본 이미지 2. 저해상도 사본

사용자가 페이지를 볼 때 원본 이미지가 백그라운드에서 다운로드되는 동안 낮은 해상도 이미지가 처음에 표시됩니다.

PHP를 통해 이미지의 크기를 조정할 준비가 된 코드를 쉽게 찾을 수 있습니다. 이 같은. http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

+0

이미지를 이미 업로드 했으므로 업로드 할 수 없습니다. 나는이 일을 할 수있는 네이티브 Wordpress 기능이 있다고 생각했지만 그럴 듯하지는 않습니다. 이미지를 다시 저장하지 않고도이를 수행 할 수있는 방법이 있습니까? 나는 그것이 무거운 서버일지도 모르지만 우리는 이것을 처리 할 거대한 서버를 가지고 있으며, 어떤 것도 한 번에로드하려고하는 이미지의 18MB에 대한 개선이라고! – Rob

+0

이미 서버에있는 모든 이미지의 저해상도 사본을 생성하는 배치 코드를 적용 할 수 있습니다. –