プロジェクト

全般

プロフィール

Bug(バグ) #2632

完了

管理画面から画像をアップロードしたときに透過画像のときに透過されなくなる

Yuya Watanabe さんがほぼ13年前に追加. 7年以上前に更新.

ステータス:
Won't fix(対応せず)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-11-29
期日:
進捗率:

0%

予定工数:
3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Unknown (未調査)

説明

概要

管理画面から画像をアップロードしたときに透過画像のときに透過されなくなる.

原因

管理画面画像リスト(/pc_backend.php/monitoring/imageList)で画像を表示する際に保存されている画像のフォーマットが考慮されていない.
他の画像の場合にはファイル名のサフィックスとして拡張子を付与する(例: hoge_png)ことで sf_image_path() 使用時に自動的に保管するようになっているが, 管理画面の画像アップロードページからのアップロードではそのサフィックスが与えられていない.

apps/pc_backend/modules/monitoring/templates/_imageInfo.php

  5 <dd class="upImage"><a href="<?php echo sf_image_path($image->getName()) ?>"><?php echo image_tag_sf_image($image->getName(), $options = array('size' => '120x120')) ?></a></dd>

lib/vendor/symfony/lib/plugins/sfImageHandlerPlugin/lib/helper/sfImageHelper.php

 27 function image_tag_sf_image($filename, $options = array())
 28 {
 29   if (empty($options['alt']))
 30   {
 31     $options['alt'] = '';
 32   }
 33 
 34   if (!$filename)
 35   {
 36     if (isset($options['no_image']))
 37     {
 38       $filename = $options['no_image'];
 39       unset($options['no_image']);
 40     }
 41     else
 42     {
 43       $filename = 'no_image.gif';
 44     }
 45     return image_tag($filename, $options);
 46   }
 47 
 48   $filepath = sf_image_path($filename, $options);
...
 69 function sf_image_path($filename, $options = array(), $absolute = false)
 70 {
 71   if (isset($options['f']))
 72   {
 73     $f = $options['f'];
 74   }
 75   elseif (isset($options['format']))
 76   {
 77     $f = $options['format'];
 78   }
 79   elseif (is_callable(array($filename, 'getType')))
 80   {
 81     $f = str_replace('image/', '', $filename->getType());
 82   }
 83   else
 84   {
 85     $parts = explode('_', $filename);
 86     $f = array_pop($parts);
 87   }
 88 
 89   if ($f !== 'jpg' && $f !== 'png' && $f !== 'gif')
 90   {
 91     $f = 'jpg';
 92   }

修正方法

File クラスインスタンスを表示用のヘルパー関数に渡すようにしていき、インスタンスの保持する MIME Type 情報に基づく画像フォーマットを選択できるようにする.

diff --git a/apps/pc_backend/modules/monitoring/templates/_imageInfo.php b/apps/pc_backend/modules/monitoring/templates/_imageInfo.php
index 2e4af77..37d1913 100644
--- a/apps/pc_backend/modules/monitoring/templates/_imageInfo.php
+++ b/apps/pc_backend/modules/monitoring/templates/_imageInfo.php
@@ -2,7 +2,7 @@
 <div class="cell">
 <dl>
 <dt class="day"><?php echo $image->getCreatedAt() ?></dt>
-<dd class="upImage"><a href="<?php echo sf_image_path($image->getName()) ?>"><?php echo image_tag_sf_image($image->getName(), $options = array('size' => '120x120')) ?></a></dd>
+<dd class="upImage"><a href="<?php echo sf_image_path($image) ?>"><?php echo image_tag_sf_image($image, $options = array('size' => '120x120')) ?></a></dd>
 <dd class="fileName"><?php echo $image->getName() ?></dd>
 <?php if ($deleteBtn): ?>
 <dd class="delete"> 


ファイル

361_backend.jpg (8.42 KB) 361_backend.jpg Yuma Sakata, 2011-12-15 11:12

関連するチケット 4 (1件未完了3件完了)

関連している OpenPNE 3 - Backport(バックポート) #2831: 管理画面から画像をアップロードしたときに透過画像のときに透過されなくなるFixed(完了)Yuya Watanabe2011-11-29

操作
関連している OpenPNE 3 - Backport(バックポート) #2839: 管理画面から画像をアップロードしたときに透過画像のときに透過されなくなるFixed(完了)Yuya Watanabe2011-11-29

操作
関連している OpenPNE 3 - Bug(バグ) #2864: OpenPNE 2 からコンバートされたか、管理画面からアップロードされた画像が常に JPEG として表示されてしまう箇所があるNew(新規)2012-03-08

操作
関連している OpenPNE 3 - Backport(バックポート) #3110: 管理画面から画像をアップロードしたときに透過画像のときに透過されなくなるFixed(完了)開 石切山2011-11-29

操作

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