Project

General

Profile

Actions

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

open

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

Added by pnetan   over 12 years ago. Updated almost 5 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2012-07-30
Due date:
% Done:

0%

Estimated time:

Description

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画像を排除しない場合はもう少し一工夫が必要かと思う。
Actions #1

Updated by kaoru n almost 5 years ago

  • Target version set to OpenPNE 3.10.x
Actions

Also available in: Atom PDF