2013-05-17 9 views
2

몇 달 전 나는 PHP to Retinanon 망막 이미지로 업로드 된 이미지를 변환하기 위해 다음 스크립트를 작성했습니다. 이 스크립트로 작업하던 아이폰 앱은 PNG 이미지 만 사용 했으므로 PNG로 작업 할 스크립트를 작성했습니다.PHP로 JPEG에서 망막 이미지를 만드는 방법

$filename = dirname(__FILE__)."/uploads/" . $_FILES['myFile']['name']; 
$filename = str_replace('.png', '_retina.png', $filename); 
file_put_contents($filename, file_get_contents($_FILES['myFile']['tmp_name'])); 

$image_info = getimagesize($filename); 
$image = imagecreatefrompng($filename); 

$width = imagesx($image); 
$height = imagesy($image); 

$new_width = $width/2.0; 
$new_height = $height/2.0; 

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

imagealphablending($new_image, false); 
imagesavealpha($new_image, true); 
$color = imagecolortransparent($new_image, imagecolorallocatealpha($new_image, 0, 0, 0, 127)); 
imagefill($new_image, 0, 0, $color); 

imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

$new_filename = str_replace('_retina.png', '.png', $filename); 

imagepng($new_image, $new_filename); 

이제는 동일한 스크립트가 필요하지만 Jpeg 이미지와 함께 사용해야합니다. 아이폰 앱은 더 높은 해상도로 이미지를로드하므로 Jpeg를 선택했습니다. 그러나 나는 그 일을하는 방법을 알아낼 수 없습니다.

내가 지금까지 시도했습니다 무엇 :

  • 은 JPEG 버전 imagepng을 교체 JPEG 버전
  • 으로 imagecreatefrompng 교체

는 사람이 동작하는 예제 또는 유용한 링크를 가지고 있는가 나를 올바른 방향으로 인도 할 수 있을까요?

+0

투명성이없는 경우 저는 단지 'imagejpeg'을 사용합니다. –

+0

@ MaximKhan-Magomedov 아, 기다려, 오프 그 jpeg 및 메신저 투명성 명령을 사용하여 그게 뭐죠? – RTB

+0

PNG로 만들면 여전히 투명성을 가지고 작업 할 수 있다고 생각합니다. 그것은 회색으로 바뀔 것입니다 (나는 생각합니다). 마지막에 imagejpeg를 호출하여 저장합니다. –

답변

0

문제가 무엇인지 알아 냈습니다. jpg PHP 함수는 투명도를 처리 할 수 ​​없다고 가정 했으므로이 선을 제거하고 깜빡했습니다. 분명히 그냥 흰색 배경을 만들고 실패하지 않습니다. 따라서 스크립트는 다음과 같습니다 :

$filename = dirname(__FILE__)."/uploads/" . $_FILES['myFile']['name']; 
$filename = str_replace('.jpg', '_retina.jpg', $filename); 
file_put_contents($filename, file_get_contents($_FILES['myFile']['tmp_name'])); 

$image_info = getimagesize($filename); 
$image = imagecreatefromjpeg($filename); 

$width = imagesx($image); 
$height = imagesy($image); 

$new_width = $width/2.0; 
$new_height = $height/2.0; 

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

imagealphablending($new_image, false); 
imagesavealpha($new_image, true); 
$color = imagecolortransparent($new_image, imagecolorallocatealpha($new_image, 0, 0, 0, 127)); 
imagefill($new_image, 0, 0, $color); 

imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

$new_filename = str_replace('_retina.jpg', '.jpg', $filename); 

imagejpeg($new_image, $new_filename);