好的,所以我进行了一些搜索,无法在任何地方找到这个问题,所以希望它不会重复。
我有这个程序,它应该重新排列图像,使每个角落移动到对角。这是一个例子: The Expected Behavior
这是我尝试过的Java代码:
//TL
BufferedImage b1 = (b.getSubimage(0, 0, w/2, h/2));
//TR
BufferedImage b2 = (b.getSubimage(w/2, 0, w/2, h/2));
//BL
BufferedImage b3 = (b.getSubimage(0, h/2, w/2, h/2));
//BR
BufferedImage b4 = (b.getSubimage(w/2, h/2, w/2, h/2));
Graphics2D g2d = b.createGraphics();
//New TL
g2d.drawImage(b4, 0, 0, null);
//New TR
g2d.drawImage(b3, w/2, 0, null);
//New BL
g2d.drawImage(b2, 0, h/2, null);
//New BR
g2d.drawImage(b1, w/2, h/2, null);
其中b是位图,我试图重新排列。此代码生成以下结果:
我设法通过添加额外的行来修复代码:
BufferedImage bTest = new BufferedImage(b.getWidth(), b.getHeight(),BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bTest.createGraphics();
然后使用bTest而不是b。
所以我想我的问题是,getSubImage实际上做了什么?据我所知,它只是作为对原始BufferedImage的引用而不是在被调用时复制它。
我希望有一个工作版本,它不需要中间BufferedImage。
如果有人可以提供一些帮助,我们将不胜感激。感谢。
答案 0 :(得分:0)
假设BufferedImage
是$ptime = "2017-06-08 03:16:20";
function get_timeago( $ptime )
{
$estimate_time = time() - $ptime;
if( $estimate_time < 1 )
{
return 'less than 1 second ago';
}
$condition = array(
12 * 30 * 24 * 60 * 60 => 'year',
30 * 24 * 60 * 60 => 'month',
24 * 60 * 60 => 'day',
60 * 60 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach( $condition as $secs => $str )
{
$d = $estimate_time / $secs;
if( $d >= 1 )
{
$r = round( $d );
return ' This Happened About ' . $r . ' ' . $str . ( $r > 1 ? 's' : '' ) . ' ago';
echo "$r";
}
}
}
$timeago=get_timeago(strtotime($ptime));
echo $timeago;
- documentation of getSubimage说:
返回由指定矩形区域定义的子图像。返回的BufferedImage 与原始图像共享相同的数据数组。
这意味着如果你在对面的角落画一个角落,它也会在以前保存的子图像中被绘制。
您将需要至少一个临时像素,更好的一个临时角图像。恕我直言最好使用另一个 <?php
$sql2="SELECT * FROM ".$cn."msg ";
$result2= mysql_query($sql2) or die(mysql_error());
while($rwsm= mysql_fetch_array($result2)){
echo"<li>";
echo "<i class='fa fa-envelope bg-orange'></i>";
echo "<div class='timeline-item'>";
echo "<span class=\"time\"><i class=\"fa fa-clock-o\"></i>".$rwsm[3]."</span>";
echo "<h3 class='timeline-header'><a href='mailto:".$rwsm[2]."'> ".$rwsm[2]." </a></h3>";
$msg= $rwsm[1];
echo "<div class='timeline-body'>".$msg."</div>";
echo "</div>";
echo "</li>";
}
?>
(更容易理解)。