プロジェクト

全般

プロフィール

Enhancement(機能追加・改善) #3139

未完了

300kのアップロード制限の廃止

pnetan   さんが12年以上前に追加. ほぼ5年前に更新.

ステータス:
New(新規)
優先度:
Normal(通常)
担当者:
-
対象バージョン:
開始日:
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画像を排除しない場合はもう少し一工夫が必要かと思う。

kaoru n さんがほぼ5年前に更新

  • 対象バージョンOpenPNE 3.10.x にセット

他の形式にエクスポート: Atom PDF