操作
Enhancement(機能追加・改善) #3139
未完了300kのアップロード制限の廃止
開始日:
2012-07-30
期日:
進捗率:
0%
予定工数:
説明
http://sns.openpne.jp/diary/27757 より転記
日記本文¶
最近のスマホにしても携帯にしてもデジカメにしても、画素数がおおく300k以下に収まることがない。そのため、参加者側でファイルサイズを小さくする手間が必要になり、他のSNSと比べても利便性を落としてしまっている。 そのため、サーバ側でjpegデータを受け取ったあとにimagickで画像を最適化することで大幅なファイルサイズの軽減を行う。 修正) lib/model/doctrine/File.class.php public function isImage() { $type = $this->getType(); if ($type === 'image/jpeg') // || $type === 'image/gif' // || $type === 'image/png') { return true; } gif, pngをあえてアップロード不可にする。 修正) lib/model/doctrine/File.class.php public function save(Doctrine_Connection $conn = null) { $this->setFilesize(strlen($this->FileBin->bin)); if ($this->isImage()) { $class = sfImageHandler::getStorageClassName(); $this->setName(call_user_func(array($class, 'getFilenameToSave'), $this->getName()), $class); $storage = call_user_func(array($class, 'create'), $this, $class); $image = new Imagick; $image->readImageBlob($this->FileBin->bin); if($image->getImageWidth() > 1024 || $image->getImageHeight() > 768) { $image->scaleImage(1024,768,True); $image->setCompressionQuality(80); } $this->FileBin->bin = $image; $storage->saveBinary($this->getFileBin()); } 画像データを受け取った後、それがイメージファイルであれば 1024x768 ベストフィットリサイズを行わせてからDBに入れるという形。 そのため、予めphp.iniにアップロード制限を撤廃しておき、またSNSでもファイルサイズ制限を撤廃しておく。 この修正を入れると png , gif を画像とみなさないため、一部の参加者のアイコン画像やその他日記等で使われているとすべて表示されなくなる。当SNSでは90%以上jpegなのでこの修正で踏み切ったが、png,gif画像を排除しない場合はもう少し一工夫が必要かと思う。
操作