2014-09-12 8 views
0

DB에서 오는 이미지 (기본 64 형식)를 회전하려하고 있습니다. 회전 된 이미지를 mysql로 ​​다시 업데이트한다.기본 64 이미지를 회전하고 BLOB로 MySql에 삽입하십시오.

내 이미지

$imageData=mysql_real_escape_string($rs[0]['image_data']);// base 64 format 
$degrees = 180; 

이미지 회전 기능

ob_start(); 
    $destImage = imagerotate($imageData, $degrees, 0) ;  
    imageJPEG($destImage); 
    $image_thumb =mysql_real_escape_string(ob_get_contents()); 
    ob_end_clean(); 

컨트롤위한 ob_start 내부 않을 것이다(). 도와주세요

답변

0

당신은 DB에서 읽은 데이터를 벗어나고 싶지 않습니다, 당신은 그것을 쓸 때만 그것을 이스케이프합니다.

$imageData = $rs[0]['image_data']; 
$im = imagecreatefromstring($data); 

$degrees = 180; 

ob_start(); 
$destImage = imagerotate($im, $degrees, 0) ;  
imageJPEG($destImage); 
$image_thumb =mysql_real_escape_string(ob_get_contents()); 
ob_end_clean(); 

추가해야 할 수도 있습니다 다른 것은 64 기수에 대한 디코딩/인코딩입니다 : 원시 데이터는 이미지 리소스가 아닙니다. 그렇게 쉽게 BLOB로 저장할 수 있습니다. 그렇지 않으면 문제가 될 수있는 바이너리 문자열을 이스케이프 처리합니다.

+0

대단히 감사합니다. 이것은 완전히 잘 작동합니다.하지만 한 가지 문제가 있습니다. 처음으로 이미지를 회전 할 때 $ degrees = 90;라고 가정합니다. . 270도 회전합니다. 다음 번에는 완벽하게 작동합니다. – user3918082

+0

일부 이미지 유형은 거꾸로 저장됩니다. 원본 이미지가 거꾸로되어있는 경우 해당 속성이 유지되지 않을 수 있습니다. 그들은 모두 JPEG로 시작합니까? –

+0

예 그들은 모두 JPEG입니다. 하지만 왜 처음으로 회전하는 wierd .. 0에 대한 영향을 미치지 않습니다. 90을 선택하면 270이됩니다. 180을 선택하면 방향이 나타나지 않지만 반쪽 이미지가 표시됩니다 – user3918082

관련 문제