2012-03-09 5 views
0

UPDATE : 이것에 대해 궁금 다른 사람을 위해, 나는 데이터베이스 테이블에 저장된 이미지를 http://www.php.net/manual/en/function.imagecreatefromstring.php#31178mySQL 데이터베이스에서 이미지를 가져 와서 PHP를 사용하여 크기를 조정하려면 어떻게해야합니까?

의 의견을 확인하십시오. 원본 크기로 업로드됩니다. "getimage.php? imgID = 1"과 같이 PHP 헤더를 사용하여 브라우저에이 이미지를 출력 할 수는 있지만 브라우저로 출력되기 전에 이미지의 크기를 조정하려면 막혔습니다.

새 파일에 쓰고 싶지 않습니다. 데이터베이스 테이블에서 이미지를 가져 와서 크기를 조정하십시오 (동일한 PHP 스크립트에서 수행하는 것이 바람직 함). 이 완벽 할 것 같은

뭔가? getimage.php imgID = 1 & 폭 = 75 & 높이 = 75

사람이 내가 PHP에서이 작업을 수행 할 수있는 방법을 말해 줄래?

$query= "select * from `tablename`.`photos` where `ImageID` = '".$_GET['imgID']."' LIMIT 1"; 
$downloadResult = SendQuery("browse",$query); // my own custom php function to connect & send a mysql query 
if(is_array($downloadResult)){ //check if a row was returned 
    foreach($downloadResult as $myfile) { 
     header("Content-Type: ". $myfile['mime']); 
     header("Content-Length: ". $myfile['size']); 
     if($d=="true"){ 
     header('Content-Disposition: inline; filename="'. urlencode($myfile['name']).'"'); 
     } 
     echo $myfile['data']; 
    } 
+0

포스트 코드를. 또한 어떤 그래픽 라이브러리를 서버에 설치 했습니까? 그리고 이미지 포맷은 이미지입니까? – hakre

+0

이미지를 데이터베이스 안에 두어서는 안됩니다. 파일을 파일에 보관하고 데이터베이스의 경로를 저장하십시오. 데이터베이스는 파일을 보관하기위한 것이 아닙니다! 그게 ** 파일 시스템 **입니다! –

+0

일부 폴더에 서버에 이미지를 저장하지 않습니까? – Milap

답변

3

이진 문자열 ($myfile['data'])에서 이미지 데이터를로드합니다. 필요한 것은 이진 문자열을 기반으로 이미지 객체를 만들 수있는 이미지 라이브러리/확장입니다. 예를 들어, GD library 문자열에서 데이터를로드 할 수 있습니다 : 당신은 다음의 요구에 이미지 크기를 조정 (이 사이트 이미 그들의 톤 포함) 매우 많은 예제 중 하나를 취할 수

$im = imagecreatefromstring($myfile['data']); 

. PNG 파일에 대한 출력 할 수 있습니다 그것은 브라우저에, 예컨대 당신이 당신의 이미지를 크기를 조정 한 후

이 :

imagepng($im); 
imagedestroy($im); 

imagecreatefromstring­Docs를 참조하십시오. 쉬운 인터페이스로 크기를 조정하는 이미지 라이브러리를 사용하는 경우 유용 할 수 있습니다 (예 : Wideimage). 이진 문자열에서도 로딩을 지원합니다.GD 기반 :

WideImage::loadFromString($myfile['data']) 
    ->resize(50, 30) 
    ->output('png'); 

예, 간단합니다. 참조 :`getimage.php`의

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다. 바이너리 문자열에서 이미지를 생성하는 방법은 확실하지 않았습니다. – P3tro

0
+0

나는 그것들을 모두 시험해 보았고, 나는 노력하고 있지 않거나, 내가하려고하는 것에 대해 너무 복잡하다. – P3tro

+0

Imagick을 사용해 보셨습니까? – Milap

0

정말 PHP에서 일어날 필요가 있습니까? max-width

+0

CSS에서 배경 이미지의 크기를 조정할 수 있다는 것을 알지 못합니까? 그래서 파일을 요청할 때 크기를 조정해야합니다. – P3tro

+0

이것이 도움이 될 것이라고 생각합니다. http://css-tricks.com/how-to-resizeable-background-image/ – jorne

0

처럼 당신은이 (테스트되지 않은 코드)처럼, ImageMagick를 사용할 수 있습니다, 그것을위한 CSS 속성이 있습니다 :

//your image code here 
    $image_path = 'path-to-image'; 

    $width = null; 
    $height = null; 

    if(array_key_exists('width', $_REQUEST)) { 
     $width = intval($_REQUEST['width']); 
    } 

    if(array_key_exists('height', $_REQUEST)) { 
     $height = intval($_REQUEST['height']); 
    } 

    //add your header infos like 
    header('Content-Type: image/jpg'); 
    header('Content-Disposition: attachment; filename="filename.jpg"'); 
    if(null !== $width && null !== $height) { 
     $cmd = 'convert '.escapeshellarg($image_path).' -resize '.$width.'x'.$height.' - '; 
     echo shell_exec($cmd); 
    } 
    else { 
     readfile($image_path); 
    } 
0

당신의 getimage.php 스크립트는 순간에 무엇을 하는가? 데이터베이스의 이미지를 HTMLimg 태그로 표시합니까? img 태그에 이미지가 표시되면 img 태그에 widthheight 필드를 추가하여 필요한 크기로 이미지를 표시 할 수 있습니다.

+0

getimage.php 스크립트는 이미지를 브라우저로 출력합니다. PHP에서는 요청되는 내용이 이미지라는 헤더를 설정했습니다 (위의 코드를 참조하십시오). – P3tro

관련 문제