2012-08-03 8 views
0

이미지가있는 동일한 폴더에서 imagick 기본을 사용하는 PHP 스크립트를 사용하면 출력 파일 이름이 완벽하므로 PDF 첫 페이지의 이미지를 출력합니다 :다른 디렉토리 및 데이터베이스를 사용하는 Imagick JPG

// Read page 1 
$im = new imagick('Miami_Guide.pdf[0]'); 
// Convert to png 
$im->setImageFormat("png"); 
// Send out 
header("Content-Type: image/png"); 
echo $im; 

이 스크립트를 다른 디렉토리로 이동하고 데이터베이스 레코드에서 $ uploaded라는 필드 이름을 사용하려면 어떻게해야합니까? 나는 이것을 시도했지만 작동하지 않았다 :

$path: '../../otherplace/'; 
// $uploaded is the field with the filename value 
$fileloc: $path . $uploaded; 
// Read page 1 
$im = new imagick('$fileloc[0]'); 
// Convert to png 
$im->setImageFormat("png"); 
// Send out 
header("Content-Type: image/png"); 
echo $im; 

나는 "치명적인 오류 얻을 : catch되지 않은 예외 '파일 읽을 수 없습니다 : $의 fileloc'메시지 'ImagickException'/ 홈/사용자/public_html을/디렉토리에를 /home/user/public_html/dir/folder/script.php(334) : Imagick -> __ construct ('$ fileloc') # 1/home/user/public_html /follow/script.php:334 스택 추적 : /home/user/public_html/dir/folder/script.php 334 행의 show_record (array) # 2 {main} 던졌습니다.

pathinfo() 및 치명적인 오류가 발생했습니다. 오류가 다시 발생했습니다.

몇 가지 조작을했지만 지금은 Imagick이 gibb를 반환하고 있습니다. 대신 이미지의 erish : 대신 이미지의

$sourcePath = 'dir/folder/'; // Path of original image 
$sourceUrl = 'http://www.site.com/'; 
$thumbPath = $sourcePath; // Writeable thumb path 
$thumbUrl = $sourceUrl . $thumbPath . $uploaded ; 
$im = new Imagick($thumbUrl); 
$im->setImageFormat("jpg"); 
$im->thumbnailImage(100, 100); 
header("Content-type: image/jpg"); 
echo "$im"; 

"오류 없음"하지만 출력 횡설수설!

ÿÛCÿÀdd! "ÿÄÿÄ9 1"# A2QVh '• |Ôä $ WAQ ± ÓÿÄÿÄ) 1Qq "A'Òar '¡ 은어 Íkßμ + ¾;? é = oÕÜŽW # U-ÙænÝ»ë'çOo'OÒÝr2_^¬ÇiÓFãaR> 5 $ ò ~ \'0 #에서 ¢ - · © ÕuμðGMXÍ«ùÛæÿÃ'g§lfÍ, Ø "SU * ¥ 아 "시간 ‡/QK = Ýržzï-> ~ AOUT ƒÔ«á3žŽÃ <¶s8yd"4 ݤ®§,ÇqW¼ºÎ £

어떤 도움이 필요합니까?

답변

0

첫 번째 예가 효과가없는 이유는 변수가 큰 따옴표가 아닌 작은 따옴표 안에 들어 있기 때문입니다.

이 :

$im = new imagick('$fileloc[0]'); 

물론 존재하지 않는 $fileloc라는 이름의 파일을 찾기 위해 ImageMagick를 지시합니다.

대신 이렇게 : 두 번째 예로서

$im = new imagick("$fileloc[0]"); 

을, 나는 어떤 이유로 $im 내부 따옴표 당신 echo 넣어했기 때문에이 문제가 보라.

대신 :

echo $img; 

당신이해야

echo $im; 

하지 여기

echo "$im"; 
+0

고든 감사하지만 작동하지 않았다 – cchap

+0

그것이 어떤 차이를 만들었나요? 지금 당신의 결과는 무엇입니까? –

+0

방금 ​​해결책을 게시했습니다 : echo ""; – cchap

0

이 솔루션입니다 : 당신은 당신이 작업 테스트에 있던 같은 방법으로 반향한다 에코 :

echo "<img src='data:image/jpg;base64,".base64_encode($img)."' />"; 

내 Imagick 문제가 해결되어 다른 사람들에게 도움이되기를 바랍니다.

나는 확실히 기본 사항을 테스트했다. test.pdf> test.jpg, 테스트 : test.pdf> test.png, test.pdf> test.tiff - 확장 기능은 대표단에 있었고 정상적으로 작동했습니다. 다른 곳으로 옮겨 파일을 다른 곳에서 가져 왔습니다. 모든 단계의

개요 :

1 설치 imagick (PHP)는 - 나는 (STABLE)

2했다 HTTP를 통해 파일의 경로를 설정 생각 : //

3 나머지는 꽤 많이 Imagick 기초 :

$pdfUrl = "http://www.site.com/dir/$file"; 
$img = new Imagick($pdfUrl); 
$img->setImageFormat("jpeg"); 
echo "<img src='data:image/jpg;base64,".base64_encode($img)."' />"; 
+0

이것은 이미지를 전송하기 위해 원래 설정 한 작업을 수행하지 않습니다. 여기에 이미지가 포함 된 HTML 스 니펫이 보내지는데, 이는 전혀 똑같지 않습니다. –

+0

3 일 후에 비슷한 해결책을 찾기 위해 노력한 이래로 내 요구가 해결되었습니다. echo $ im; 또는 echo "$ im"; - 둘 다 횡설수설과 헤더 ("Content-type : image/jpg")가 발생했습니다. 대리자 오류 – cchap

+0

으로 해결되었습니다. 내가 생각하기에 뭐든간에 공정합니다. –