JCropを使用してユーザーのプロファイル画像を切り抜くCodeigniterアプリに取り組んでいます。
画像がアップロードされたら、標準的な方法を使用してJcropを実行し、フォームを介して座標を送信します。
<script type="text/javascript">
$(function() {
$('#cropbox').Jcrop({
onSelect: updateCoords,
aspectRatio: 1,
setSelect: [ 50, 50, 150, 150 ],
bgColor: '#fff',
bgOpacity: .2
});
});
function updateCoords(c)
{
$('#x').val(c.x);
$('#y').val(c.y);
$('#w').val(c.w);
$('#h').val(c.h);
};
</script>
// some code here...
<?php echo form_open('/profile/crop_picture', array('id' => 'crop_picture_form')); ?>
<input type="hidden" name="x" id="x" />
<input type="hidden" name="y" id="y" />
<input type="hidden" name="w" id="w" />
<input type="hidden" name="h" id="h" />
<br />
<?php echo form_close(); ?>
これはすべてSafariとFF4.0で完全に機能します。ユーザーがトリミングする領域を選択して送信すると、トリミングされた画像でページが更新されます。
ChromeとIE8では、ユーザーが送信すると、ページは更新されますが、画像はトリミングされません。キッカー->ブラウザで更新を押すと、画像がトリミングされます。
言うまでもなく、これは非常に奇妙です。誰かがこの問題のデバッグを開始する場所を提案していますか?またはこれが以前に発生/説明されているのを見たことがありますか?
助けてくれてありがとう。
編集:まだ解決されていませんが、さらにテストすると、これはCrとIE8のキャッシュの問題である可能性があります。Chromeは、クロップディメンションが送信され、処理され、codeigniterによってサーバーに保存された場合でも、元のアップロードされた画像を保持し、表示しているようです。トリミング用のCIコントローラーの最後に
redirect('/profile/picture', 'refresh');
これは、トリミングされた画像が送信された後に新しいページが読み込まれたときにChromeとIE8に影響を与えませんでした。トリミングされた画像は、ブラウザで「更新」を手動でトリガーした場合にのみ表示されます。
サーバーの画像ファイルを確認したところ、これが確認されました。トリミングされた画像はサーバーに保存されましたが、Chromeに表示される画像ファイル(同じ名前)には、以前のトリミングされていないサイズがあります。