Posts tagged resize
[CakePHP] 画像をリサイズするヘルパー Image Resize Helper & Image magick Resize Helper
3先日画像をアップロード&リサイズするビヘイビアを紹介しましたが、今回は画像をリサイズするヘルパーを2つ紹介します。
両方のヘルパーともキャッシュファイルを生成して表示しています。キャッシュがない場合はリサイズしてキャッシュファイルを生成、キャッシュファイルよりも元画像の方が新しければ画像が更新されたのでキャッシュを生成しなおしてくれます。ただ、両方のヘルパーとも画像ファイルのみでキャッシュファイルを生成するため、階層構造の画像ファイルを使用する場合はカスタマイズが必要です。
ImageBehavior でアップロード時に必要な画像のサイズにリサイズするのもいいですが、デザインによっては画像の大きさが各種あったり、サイトのリニューアルで画像サイズが変わったりすることもあるので、表示時にリサイズする利点はあると思います。
(続きを読む…)
[CakePHP] 画像のアップロード&リサイズを簡単にできる ImageBehavior
19画像のアップロード&リサイズ処理などは割とよくある処理でかつ面倒なものです。その処理を簡単にやってくれる Imageビヘイビアの紹介です。CakeFest で紹介された Media Plugin が高性能なので、メディアプラグインを使うのがいいのかもしれませんが、以前から Image ビヘイビアに関していつか使い方をまとめようと思っていたので紹介します。
参考サイト:ActAs Image column behavior (Articles) | The Bakery, Everything CakePHP
Baker で紹介されていた Image ビヘイビアです。このビヘイビアはアップロードされた画像をサムネイル作成、リサイズ、複数のバリエーションのサイズの画像を作成してくれます。またモデルを find すると画像のパスを返してくれます。
作成される画像は、webroot/img/[Model Name]/[Model ID]/ 以下に設定した名前でそれぞれの画像を作成してくれます。
(続きを読む…)
[iPhone] 画像をリサイズする
1iPhone で画像をリサイズする方法です。
下記で、UIImage *image の画像を 320×480 のサイズにリサイズしています。
(続きを読む…)
Flash 画面リサイズされても常に中央に表示される MovieClip
1swf だけで表示したときに画面サイズに関係なく、また画面をリサイズしてもコンテンツが縮小・拡大されずに常に中央に表示されるようにする方法です。
fla ファイルの構成が
背景画像:back_mc
常に中央に配置するMC: main_mc
とすると
(続きを読む…)
PHP で大きいJPEGやPNGファイルをPHPで扱うときのメモリエラー回避方法
0GD でメモリエラー
に書かれているように GD で JPEG や PNG の大きな画像を扱うときに
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 11648 bytes) in ...
というようなエラーが出てしまいます。
上のエラーがは私が EOS5D で撮影した 2912×4368とかなり大きな画像です。
大きさで制限するのも一つの方法ですが、どうしても大きな画像を取り込みリサイズしなければいけないときなどのために以下の方法もあります。
PHP: imagecreatefromjpeg – Manual
PHP に割り当てられているメモリの範囲で必要なメモリを計算して
ini_set('memory_limit', 'xxM')
と設定しれくれます。
function setMemoryForImage( $filename ){ $imageInfo = getimagesize($filename); $MB = 1048576; // number of bytes in 1M $K64 = 65536; // number of bytes in 64K $TWEAKFACTOR = 1.5; // Or whatever works for you $memoryNeeded = round( ( $imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $imageInfo['channels'] / 8 + $K64 ) * $TWEAKFACTOR ); //ini_get('memory_limit') only works if compiled with "--enable-memory-limit" also //Default memory limit is 8MB so well stick with that. //To find out what yours is, view your php.ini file. $memoryLimit = 8 * $MB; if (function_exists('memory_get_usage') && memory_get_usage() + $memoryNeeded > $memoryLimit) { $newLimit = $memoryLimitMB + ceil( ( memory_get_usage() + $memoryNeeded - $memoryLimit ) / $MB ); ini_set( 'memory_limit', $newLimit . 'M' ); return true; }else return false; } }