갤러리 소프트웨어를 사용하고 있는데 문제가 있습니다. 이미지 업로드 후 EXIF 데이터의 '방향'플래그는 그림의 방향에 관계없이 항상 1 ("아무 것도하지 않음")로 설정됩니다. 이것은 올바른 방향으로 사진을 표시 할 수 없다는 것을 의미합니다.HTML 형식과 PHP 스크립트를 통해 JPEG 이미지를 업로드하면 EXIF 데이터의 방향 플래그가 1로 설정되어있는 것으로 보입니다 (또는 완전히 벗겨 내기)
여기 내 업로드 양식의 두드러진 부분은 다음과 같습니다
<form id="Upload" name="Upload" action="http://www.goosedalemodelflyingclub.co.uk/index.php" enctype="multipart/form-data" method="post">
...
<div class="uploadbox">
<label>Choose photo to upload:<input id="file_upload1" type="file" name="file_upload1" accept="image/*"></label>
<br>
<label>Name of Photo: (1) <span id="new_msg_name1"></span><br><input type="text" class="p_name" size="60" maxlength="40" id="new_name1" name="new_name1" value=""></label>
<br>
<label>Description:
<span id="new_msg_desc1"></span><br>
<textarea id="new_desc1" name="new_desc1" class="p_desc" rows="4" cols="70" maxlength="250" style="width: auto; height: auto;"></textarea>
</label>
<br>
<label>Who is able to view this picture:
<select id="albpic_visib_upload1" name="albpic_visib_upload1">
<option value="O">Me only</option>
<option value="G">Forum only</option>
<option value="W">Everyone</option>
</select>
</label>
<br><br>
<input type="submit" onclick="return validateUploadForm(this)" id="NewPix1" name="NewPix1" value="Upload Photos to Current Album">
<a href="#">
<input type="button" name="cncl" id="cncl" value="Cancel">
</a>
<br>
</div>
...
<input type="hidden" id="p" name="p" value="MyGallery">
<input type="hidden" id="override" name="override" value="Y">
<input type="hidden" id="albumid" name="albumid" value="54321">
<input type="hidden" id="gfunc" name="gfunc" value="NewPix1">
<input type="hidden" id="pix_this_upload" name="pix_this_upload" value="15">
<input type="hidden" id="user_id_passed" name="user_id_passed" value="12345"></div>
</form>
내가 pix_this_upload에 의해 주어진 사진의 수를 허용하도록 클래스 "uploadbox"을 가진 부서의 수 (한 번에 업로드 할 수 있고, 15 일 수도 있고 그렇지 않을 수도 있음). JavaScript 함수 validateUploadForm()은 아무런 관련이 없습니다. 필드가 올바르게 채워 졌는지 확인하고 잘못된 것이 있는지 사용자에게 알려주는 것입니다.
(날이의 바닥에 도착하는 데 도움이되는 몇 가지 디버깅보고를 포함한다)는 다음과 같이 내 PHP 스크립트의 관련 부분은 다음과 같습니다
$formfiles = $request->file("file_upload$ii");
$tempfile = $formfiles['tmp_name']; // Temporary name of file (uploaded as)
...
$uploaded = @move_uploaded_file($tempfile, $fullpath); // Move the uploaded file to its permanent home and rename appropriately
...
$exif = exif_read_data($fullpath); // Get EXIF data
/*** DEBUG start ***/
$ff = $this->picsrootaddr;
$ff .= "application_$pictureid.log";
$debug_r = fopen($ff, "w");
fwrite($debug_r, "$path_o\n");
$xxr = print_r(array_values($exif), true);
fwrite($debug_r, "Debug 0: " . $xxr . "\n\n");
/*** DEBUG end for now ***/
if (isset($exif['Orientation']))
{
$orientation = isset($exif['Orientation']); // Orientation
fwrite($debug_r, "Debug 1: $orientation\n");
}
else
{
if (isset($exif['IDF0']['Orientation']))
{
$orientation = $exif['IDF0']['Orientation']; // Orientation
fwrite($debug_r, "Debug 2: $orientation\n");
}
else
{
$orientation = EXIF_NOTHING; // Leave image as-is
fwrite($debug_r, "Debug 3: $orientation\n");
}
}
/*** DEBUG start ***/
fclose($debug_r);
/*** DEBUG end ***/
그것은 그것의 일부이기 때문에 전체 코드를 게시하는 것은 매우 어렵다 함수에서, 그리고 계속 진행되고있는 검사가 많이있다 (is_uploaded_file, etc.). 또한이 사이트가 phpBB3을 사용하고 PHP의 슈퍼 전역에 대한 액세스를 차단하므로이 $ request 객체를 사용할 수 있습니다. 이것은 phpBB3 자체에 의해 인스턴스화되었으므로 사용해야합니다. 여기
내가 (내 시험을 방해하지 않도록 유지 영역으로 이동) 스크립트를 사용하여 업로드 한 사진에 대한 링크입니다 : 여기 http://www.goosedalemodelflyingclub.co.uk/gallery_aux/original/43/pic176_DSCF4678.JPG스크립트 온라인에 대한 링크입니다 I EXIF 데이터가 표시됩니다. http://regex.info/exif.cgi?imgurl=http%3A%2F%2Fwww.goosedalemodelflyingclub.co.uk%2Fgallery_aux%2Foriginal%2F43%2Fpic176_DSCF4678.JPG EXIF 데이터에 방향이 포함되지 않고 고도로 처리 된 것을 확인하십시오. http://www.goosedalemodelflyingclub.co.uk/gallery_aux/application_176.log 주 I는 동일한 사진을 업로드
1과 오리엔테이션 '플래그가보고되는 방법
이
내가 파일 EXIF 데이터를 인쇄하는 추가 코드를 디버깅하여 제조 된 EXIF 로그 파일 바로 여기 FileZilla의를 사용하여 : 그것은 (어쨌든, 구글 크롬에서) 올바른 방향으로 표시하는 방법을 http://www.goosedalemodelflyingclub.co.uk/stackoverflow/DSCF4678.JPG 참고그리고 여기가 같은 웹 사이트에서의 EXIF 데이터 보고서된다 http://regex.info/exif.cgi?dummy=on&imgurl=http%3A%2F%2Fwww.goosedalemodelflyingclub.co.uk%2Fstackoverflow%2FDSCF4678.JPG
어딘가에 선을 따라 EXIF 데이터가 벗겨지고 있습니다. 이미지가 올바르게 표시되도록 이미지를 회전하거나 뒤집을 가능성이 없습니다.
누군가 나에게 올바른 방향으로 조종사를 주실 수 있습니까? 나는 이것을 봤어.이 기사는 무수한 기사, 튜토리얼 및 질문을 제기했다.
PPS : 여기에 비슷한 질문이 있지만 동일하지는 않지만 대답은 제공되지 않습니다. No orientation in exif data - PHP image upload - 어쨌든 iOS에 관한 것입니다.
whats'$ path_o'? 그것은'$ fullpath'가 아니어야합니까? – cmorrissey
당신이 옳아 - 내 C & P가 나쁘다. 그 비트가 내가 언급 한 기능에 있기 때문입니다. 감사! –
TLDR - 설명을 짧게하고 코드를 더 추가 – cmorrissey