2010-03-20 1 views
0

아래 코드가 제대로 작동하는 것 같습니다. 그러나 데이터베이스의 BLOB에는 함수가 실행 된 후에 만 ​​0이 포함됩니다. 아래의 코드가 정확합니까? 어떻게하면 고칠 수 있습니까?Wordpress에서 PHP를 사용하여 축소판으로 저장 한 다음 절약하기

$tmpName = $_FILES['picture']['tmp_name']; 

$fp  = fopen($tmpName, 'r'); 
$binary = fread($fp, filesize($tmpName)); 
fclose($fp); 

$originalImage = imagecreatefromstring($binary); 
$tempImage = imagecreate(100,100); 
imagecopyresized($tempImage,$originalImage,0,0,0,0,100,100); 
ob_start(); 
imageJPEG($tempImage); 
$thumbnail = ob_get_contents(); 
ob_end_clean(); 

$wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = $thumbnail WHERE id=$id'"); 

감사합니다 :)!

+0

사진을 데이터베이스에 저장 하시겠습니까? 당신의 다음 질문은 그것을 표시하는 방법이 될 것 같아요 :) –

+0

하하하, 내가 그것을 어떻게 표시할지 모르겠다 ... 나는 보통 데이터베이스에 파일을 저장할 수 없다 ... 어쩌면 나는 DB에 저장하지 않을 것이다. 자원 낭비일지도 모릅니다. – Parris

+0

내가이 길로 가고있을 때 그것은 의미가 있었지만. – Parris

답변

1

는 가장 효율적인 방법으로 당신은 아마, 진수와 같은 DB에 BLOB/사진 데이터를 보낼 것이다 :

if (is_uploaded_file($_FILES['picture']['tmp_name'])) { 
    $originalImage = imagecreatefromjpeg($_FILES['picture']['tmp_name']); 
    $thumbImage = imagecreatetruecolor(100, 100); 
    imagecopyresized($thumbImage, $originalImage, 0, 0, 0, 0, 100,100); 

    imagedestroy($originalImage); // Free the memory as soon as possible 

    ob_start(); 
    imagejpeg($thumbImage, NULL, JPEG_QUALITY); 
    $thumbData = ob_get_contents(); 
    ob_end_clean(); 

    imagedestroy($thumbImage); 


    $wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = x'".bin2hex($thumbData)."' WHERE id=$id'"); 
} 

는 참고 x'".bin2hex($thumbData)."'x 문자열의 내용을 표시합니다 헥스로.

참고 :이 데이터베이스 여부에 이미지를 저장하는 것이 좋습니다 경우에 대한 많은 논쟁이 있습니다
. 당신은 총에 더 이상 황갈색 1GB의 저장하고자하는 (심지어 1기가바이트에서 당신이

    1. 이미지

      크기 2메가바이트 미만 : 일반적인 합의는 경우를 제외 나쁜 생각,라는 것이다 스트레칭).

    다른 모든 경우에는 디스크에 이미지를 저장하고 데이터베이스에 해당 이미지의 위치를 ​​저장하십시오.

  • +0

    몇 가지 잘못되었습니다 ... pekka도 옳았습니다. 그러나 당신이 내 코드에서 더 많은 것을 변경했기 때문에 나는 당신을 받아 들였습니다. 나는 동의합니다. 나는 5 메그 이상이 저장 될 것이라고 생각하지 않는다. 지금까지 각 사진은 1kb 이하입니다. – Parris

    +0

    "몇 가지 잘못됨"이 무엇인지 잘못 지정하십시오. – Jacco

    1

    반드시 따옴표를 추가해야합니다. 그리고 나서 이고 전체 섬네일 코드는 mysql_real_escape_string()입니다.

    $thumbnail = mysql_real_escape_string($thumbnail); 
    
    $wpdb->query("UPDATE ".$wpdb->prefix."items SET picture = '$thumbnail' WHERE 
          id='$id'"); 
    
    관련 문제