バグ報告 > フロント機能 > モバイル用イメージの変換に関して |
フロント機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
QAZU |
投稿日時: 2009/5/18 16:07
対応状況: −−−
|
半人前 登録日: 2007/3/7 居住地: 投稿: 26 |
Re: モバイル用イメージの変換に関して kishikさま
プログラマーの方に、kishikさまのソースを渡して、 実際に検証してもらいました。 色々チェックしてもらった結果、下記のようなソースが返ってきました。 検証して、まとめたプログラムだそうです。 現状では、問題なく動いているので、恥ずかしながら、このソース内で行われている処理が個人的に理解できていない状態です・・・ data/include/image_converter.inc [old] // 変換後の画像の高さが指定されていない場合、変換後の画像の横幅から求める if (is_null($this->outputImageHeight)) { $this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth); } ============================================================ [new] //変換の前画像の横幅が小さい場合画像のサイズそのまま使う if($inputImageWidth <= $this->outputImageWidth){ $this->outputImageWidth = $inputImageWidth; $this->outputImageHeight = NULL; } // 変換後の画像の高さが指定されていない場合、変換後の画像の横幅から求める if (is_null($this->outputImageHeight)) { $this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth); } mobile_image_map_[端末会社].csvによってサイズのsettingになるので 画像のサイズが大きい場合ファイルから呼んで来たサイズと比べて自動計算になるようになっています。 だからサイズが小さなイメージの場合もsettingされたサイズによって自動でイメージ変更になった後高さが計算されるので小さなサイズのイメージが自動変更されて大きくなってしまった現象がありました。 それでsettingされたサイズとイメージサイズを比べた後サイズが小さな場合に$this->outputImageWidthを変更 例えば [$this->outputImageWidth = 220] 1. 250*50 サイズの場合 = > 220*44 if($inputImageWidth <= $this->outputImageWidth){ $this->outputImageWidth = $inputImageWidth; $this->outputImageHeight = NULL; } //(250 <= 220)が違うので$this->outputImageWidth=220になります。 if (is_null($this->outputImageHeight)) { $this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth); } //$this->outputImageHeight = 50 * (220/250) の計算によって高さが44に変更されます。 2. 100*20 サイズの場合 = > 100*20 if($inputImageWidth <= $this->outputImageWidth){ $this->outputImageWidth = $inputImageWidth; $this->outputImageHeight = NULL; } //(100 <= 220)によって$this->outputImageWidth=100になります。 if (is_null($this->outputImageHeight)) { $this->outputImageHeight = $inputImageHeight * ($this->outputImageWidth / $inputImageWidth); } //$this->outputImageHeight = 20 * (100/100) の計算によって高さがそのまま20になります。 上のように変更されるので$this->outputImageWidthを変更してくれることだけでも解決可能です。 |
フラット表示 | 前のトピック | 次のトピック |