Written by Anonymous
function fetch_card_image($image, $url = null){
//var_dump($image);
//URLの?以降のクエリを削除
$image = preg_replace('/\?.*$/i', '', $image);
$filename = substr($image, (strrpos($image, '/'))+1);
$allow_exts = array('png', 'jpg', 'jpeg', 'gif' );
//拡張子取得
$ext = 'png';
$temp_ext = get_extention($filename);
if ( !in_array($temp_ext, $allow_exts) ) {
return ;
}
if ( $temp_ext ) {
$ext = $temp_ext;
}
//キャッシュディレクトリ
$dir = get_theme_blog_card_cache_path();
//画像の読み込み
if ( $file_data = @wp_filesystem_get_contents($image, true) ) {
//ディレクトリがないときには作成する
if ( !file_exists($dir) ) {
mkdir($dir, 0777);
}
//ローカル画像ファイルパス
$new_file = $dir.md5($image).'.'.$ext;
// var_dump($new_file);
if ( $file_data ) {
wp_filesystem_put_contents($new_file, $file_data);
// GDでPNGをRGB化(インデックスカラー・透過対応)
if ($ext === 'png' && function_exists('imagecreatefrompng')) {
$img = imagecreatefrompng($new_file);
if ($img) {
$truecolor = imagecreatetruecolor(imagesx($img), imagesy($img));
imagesavealpha($truecolor, true);
$transparent = imagecolorallocatealpha($truecolor, 0, 0, 0, 127);
imagefill($truecolor, 0, 0, $transparent);
imagecopy($truecolor, $img, 0, 0, 0, 0, imagesx($img), imagesy($img));
imagepng($truecolor, $new_file);
imagedestroy($img);
imagedestroy($truecolor);
}
}
//画像編集オブジェクトの作成
$image_editor = wp_get_image_editor($new_file);
if ( !is_wp_error($image_editor) ){
if (is_amazon_site_page($url)) {
$width = apply_filters('external_blogcard_amazon_image_width',THUMB160WIDTH );
$height = apply_filters('external_blogcard_amazon_image_height',THUMB160WIDTH );
$image_editor->resize($width, $height, true);
} else {
$width = apply_filters('external_blogcard_image_width',THUMB160WIDTH );
$height = apply_filters('external_blogcard_image_height',THUMB160HEIGHT );
$image_editor->resize($width, $height, true);
}
$image_editor->save( $new_file );
return str_replace(WP_CONTENT_DIR, content_url(), $new_file);
}
wp_filesystem_delete($new_file);
}
}
}