2015-03-24 65 views
0

因此,繼承人我的代碼生成的圖像緩存有問題與干預圖片

public static function getImageThumb($link) { 
    $domain = substr(Request::root(), 7); 
    if(starts_with(Request::root(), 'http://')) { 
     $domain = substr(Request::root(), 7); 
    } 
    $link = $domain.$link; // This is prety much something like this domain.name/uploads/image/13_0.jpeg 
    $img = Image::cache(function ($image) use ($link) { 
     return $image->make($link)->resize(230, 140); 
    }, 5, true); 
    return $img; 
} 

,這讓我這個: 干預\圖片\異常\ NotReadableException 圖片來源無法讀取

我真的不知道這裏錯了什麼..

感謝您的幫助!

編輯-------------------------

我固定它是這樣的:

public static function getImageThumb($link) { 
    $link = trim($link, '/'); 

    $img = Image::cache(function ($image) use ($link) { 
     return $image->make($link)->resize(230, 140); 
    }, 5, true); 

    return $img; 
} 

但是怎麼辦我現在鏈接到img?所以我可以把它放在src中用於img標籤。

回答

1

如果您打算使用URL作爲make方法的source參數,請確保它包含該方案,否則它會將其視爲本地文件路徑。因此,擺脫,你從網址中去除http://的部分,只需使用:

public static function getImageThumb($link) 
{ 
    $link = Request::root() . $link; 

    $img = Image::cache(function ($image) use ($link) { 
     return $image->make($link)->resize(230, 140); 
    }, 5, true); 

    return $img; 
} 

此外,由於圖像無法從遠程域,它更有意義,只是從文件系統讀取它,而不是做一個HTTP請求它:

public static function getImageThumb($link) 
{ 
    $path = public_path() . $link; 

    $img = Image::cache(function ($image) use ($path) { 
     return $image->make($path)->resize(230, 140); 
    }, 5, true); 

    return $img; 
} 

要返回圖像的緩存版本,你必須有檢索調整後的圖像的專用路線。像這樣的東西應該做的:

Route::get('/images/{link}', function ($link) 
{ 
    // Repo will be the class implementing your getImageThumb method 
    $img = Repo::getImageThumb($link); 

    // This makes sure the HTTP response contains the necessary image headers 
    return $img->response(); 
}); 

現在,在您的刀片刀片模板文件在生成的URL像這樣:

<img src="{{ asset('/images/' . $link) }}"> 

使用預先將/images實際的鏈接路徑你打的是路線如果可用,將使用圖像緩存。所以,你的鏈接現在應該是這樣的:的

http://domain.name/images/uploads/image/13_0.jpeg 

代替

http://domain.name/uploads/image/13_0.jpeg 

當然你可以使用任何你喜歡的路徑前綴,不一定/images

+0

你能幫我解決下一個問題嗎?我編輯了這個問題。感謝幫助! – DaveLV2 2015-03-24 22:35:03

+0

@ DaveLV2我已經用第二個問題的解決方案更新了我的答案。 – Bogdan 2015-03-24 22:38:24

+0

不,不。對於緩存的/調整大小的圖像。 – DaveLV2 2015-03-24 22:40:33