标签: image-rotation

AffineTransform.rotate() - 如何同时缩放、旋转和缩放?

我有以下代码,它可以完成我想要绘制一个上面有一些棋子的棋盘的(第一部分)。

              Image pieceImage = getImage(currentPiece);
              int pieceHeight = pieceImage.getHeight(null);
              double scale = (double)side/(double)pieceHeight;
              AffineTransform transform = new AffineTransform();
              transform.setToTranslation(xPos, yPos);
              transform.scale(scale, scale);
              realGraphics.drawImage(pieceImage, transform, this);
Run Code Online (Sandbox Code Playgroud)

也就是说,它获取棋子的图像和图像的高度,将该图像的绘图转换为棋子所在的正方形,并将图像缩放到正方形的大小。

假设我想将黑色块旋转 180 度。我希望在某个地方有类似的东西:

transform.rotate(Math.toRadians(180) /* ?, ? */);
Run Code Online (Sandbox Code Playgroud)

但我不知道要输入什么作为 X 和 Y。如果我什么都不输入,图像会很好地围绕棋盘方格的 0,0 点旋转,将棋子倒置在方格的东北方。应该是这样。我猜测过 x,y 的各种其他组合,但还没有运气。

我已经在使用翻译将片段放在正确的正方形中,旋转变换需要另一个 x,y 来围绕它旋转事物,但我不知道如何告诉变换将片段围绕一个 x,y 旋转并写入图像到不同的 x,y。有人可以帮助我设置旋转参数,或者向我指出一些可以解释这些东西如何工作的东西吗?我发现了一些无法解释它们如何工作的例子,到目前为止我还没有弄清楚如何根据我的情况改变它们......


主要编辑:添加工作代码。抱歉,我不知道如何发布图片,请替换为您自己的图片。

当我运行以下命令时,我得到一个 2x2 的棋盘,左上角有一个车,右下角有一个马。

如果我进入 SmallChessboardComponent 并从第一个旋转变换语句中去掉注释分隔符,我会将车颠倒在原来的位置,并且马不会出现。如果我注释分隔符从第二个转换语句中删除,则任何一个片段都不会出现。

我正在寻找一种方法,将这些碎片翻转到它们无论如何都会出现的正方形上。我想把每一块都画到板上;我不想要翻转棋盘的代码。

主要程序:

package main;

import java.awt.BorderLayout;

import javax.swing.JFrame;

import directredraw.SmallChessboardComponent;

public class SmallChessboardMain
{
  private static void dbg (String message) { System.out.println(message); } …
Run Code Online (Sandbox Code Playgroud)

java graphics awt image-rotation affinetransform

2
推荐指数
1
解决办法
1万
查看次数

Nivo滑块上的图像蒙版

我正在使用Nivo滑块,但想要在滑块上放置PNG图像,因此它只显示透明的部分.使用JavaScript或CSS执行此操作的最佳方法是什么?

javascript css slider image-rotation nivo-slider

1
推荐指数
1
解决办法
7563
查看次数

连续旋转图像

我想在我的网站上放置旋转徽标.我的意思是它应该不断旋转.我试过用jquery这样做.请看看,并建议我在哪里出错.为什么这段代码不起作用.请帮我

var rotation = function (){
   $("#img").rotate({
      angle:0, 
      animateTo:360, 
      callback: rotation,
      easing: function (x,t,b,c,d){        // t: current time, b: begInnIng value, c: change In value, d: duration
          return c*(t/d)+b;
      }
   });
}
rotation();
Run Code Online (Sandbox Code Playgroud)

我在我的html中使用过这段代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript" src="jquery.easing.1.3.js"></script>
<script type="text/javascript">
var rotation = function (){
   $("#img").rotate({
      angle:0, 
      animateTo:360, 
      callback: rotation,
      easing: function (x,t,b,c,d){        // t: current time, b: begInnIng value, c: change …
Run Code Online (Sandbox Code Playgroud)

jquery rotation image-rotation

1
推荐指数
1
解决办法
2647
查看次数

如何加快图像的双线性插值?

我试图用插值旋转图像,但对于大图像来说它实时太慢了.

代码类似于:

for(int y=0;y<dst_h;++y)
{
    for(int x=0;x<dst_w;++x)
    {
        //do inverse transform
        fPoint pt(Transform(Point(x, y)));

        //in coor of src
        int x1= (int)floor(pt.x);
        int y1= (int)floor(pt.y);
        int x2= x1+1;
        int y2= y1+1;


        if((x1>=0&&x1<src_w&&y1>=0&&y1<src_h)&&(x2>=0&&x2<src_w&&y2>=0&&y2<src_h))
        {
                Mask[y][x]= 1; //show pixel

                float dx1= pt.x-x1;
                float dx2= 1-dx1;
                float dy1= pt.y-y1;
                float dy2= 1-dy1;

                //bilinear
                pd[x].blue= (dy2*(ps[y1*src_w+x1].blue*dx2+ps[y1*src_w+x2].blue*dx1)+
                        dy1*(ps[y2*src_w+x1].blue*dx2+ps[y2*src_w+x2].blue*dx1));
                pd[x].green= (dy2*(ps[y1*src_w+x1].green*dx2+ps[y1*src_w+x2].green*dx1)+
                        dy1*(ps[y2*src_w+x1].green*dx2+ps[y2*src_w+x2].green*dx1));
                pd[x].red= (dy2*(ps[y1*src_w+x1].red*dx2+ps[y1*src_w+x2].red*dx1)+
                        dy1*(ps[y2*src_w+x1].red*dx2+ps[y2*src_w+x2].red*dx1));

                //nearest neighbour
                //pd[x]= ps[((int)pt.y)*src_w+(int)pt.x];
        }
        else
                Mask[y][x]= 0; //transparent pixel
    }
    pd+= dst_w;
}
Run Code Online (Sandbox Code Playgroud)

我如何加速这段代码,我尝试并行化这段代码,但由于内存访问模式(?)似乎没有加速.

c++ performance interpolation image-processing image-rotation

1
推荐指数
1
解决办法
7244
查看次数

我们可以在 MATLAB 中旋转填充原始图像背景颜色的图像吗?

默认情况下,MATLAB 函数 imrotate 旋转图像,旋转部分填充黑色。看到这个, http://in.mathworks.com/help/examples/images_product/RotationFitgeotransExample_02.png

我们也可以使用白色背景旋转图像 。

问题是,我们可以旋转填充原始图像背景的图像(使用或不使用 imrotate)吗?

特定于我的问题:旋转角度非常小的彩色图像(<=5 度)

matlab rotation image-rotation

1
推荐指数
1
解决办法
3147
查看次数

旋转 BufferedImage 改变它的颜色

我正在尝试编写一个类来在 x 和 y 方向上缝合雕刻图像。x 方向正在工作,为了减少 y 方向,我想简单地将图像旋转 90° 并在已经重新缩放的图像上运行相同的代码(仅在 x 方向上),然后将其旋转回其初始状态。

我找到了一些东西AffineTransform并尝试了它。它实际上产生了一个旋转的图像,但弄乱了颜色,我不知道为什么。

这是所有的代码:

import java.awt.image.BufferedImage;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.io.File;
import java.io.IOException;
import javafx.scene.paint.Color;
import javax.imageio.ImageIO;


public class example {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {
    // TODO code application logic here

    BufferedImage imgIn = ImageIO.read(new File("landscape.jpg"));
    BufferedImage imgIn2 = imgIn;

    AffineTransform tx = new AffineTransform();
    tx.rotate(Math.PI/2, imgIn2.getWidth() / 2, imgIn2.getHeight() / 2);//(radian,arbit_X,arbit_Y)

    AffineTransformOp op …
Run Code Online (Sandbox Code Playgroud)

java bufferedimage seam-carving image-rotation affinetransform

1
推荐指数
1
解决办法
1360
查看次数

在opencv python中拉直轮廓矩形

我有这些 IC 的图像,我必须在上面进行一些图像处理。我能够找到这些图像的轮廓。但有时这些 IC 是随机旋转的。如何将它们拉直为适当的规则矩形?

这些是我的一些轮廓检测图像:

在此处输入图片说明 在此处输入图片说明

很高兴,如果有人能让我开始学习如何将这些图像旋转回直角矩形/正方形。提前致谢 :)

opencv image-rotation python-2.7 opencv-contour

1
推荐指数
1
解决办法
2555
查看次数

如何在不切断图像部分的情况下围绕中心旋转 QPixmap

假设我有一个尺寸为 (20 x 100) 的 QPixmap。如何创建此 QPixmap 的副本,该副本已旋转了特定量并具有新尺寸以分配旋转像素图的新尺寸?

我找到了多个关于如何使用 QPainter 和 QTransform 进行旋转的示例,但似乎没有一个提供适当的方式来防止 QPixmap 被切断。

到目前为止我发现的最好的例子是:

// original = Original QPixmap

QSize size = original.size();

QPixmap newPixmap(size);
newPixmap.fill(QColor::fromRgb(0, 0, 0, 0));

QPainter p(&newPixmap);
p.translate(size.height() / 2, size.height() / 2);
p.rotate(35); // Any rotation, for this example 35 degrees
p.translate(size.height() / -2, size.height() / -2);
p.drawPixmap(0, 0, original);
p.end();
Run Code Online (Sandbox Code Playgroud)

这将旋转 QPixmap,并将其放置在相同尺寸的新 QPixmap 上。但是,我不知道如何修改它以使用新维度。

我什至尝试过简单地修改新像素图的初始大小,但这只会导致图像偏离中心(并且由于某种原因仍然被切断?)

任何支持将不胜感激!

c++ qt image-rotation qpixmap qpainter

1
推荐指数
1
解决办法
1975
查看次数

如何旋转、裁剪、缩放、翻转图像?

我正在开始一个大型项目,它需要 VBA 功能来使用 Access 和 Excel进行多种形式的图像处理

第一个是简单的旋转图像。现有答案涉及解决方法第三方插件

如何以编程方式裁剪、重新缩放、翻转或旋转图像?

解决方法和第 3 方插件不足以满足此项目的需求。

winapi vba image-processing image-rotation image-scaling

1
推荐指数
1
解决办法
3626
查看次数

UIImageView在触摸方向上旋转动画

我有一个UIImageView有一个箭头的图像.当用户点击UIView时,此箭头应指向水龙头维持其位置的方向,它应该只是改变变换.我已经实现了以下代码.但它没有按预期工作.我添加了截图.在此屏幕截图中,当我触摸左上角时,箭头方向应该如图所示.但是没有发生这种情况.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

 UITouch *touch=[[event allTouches]anyObject];
 touchedPoint= [touch locationInView:touch.view];
 imageViews.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(rangle11));
 previousTouchedPoint = touchedPoint ;
}

- (CGFloat) pointPairToBearingDegrees:(CGPoint)startingPoint secondPoint:(CGPoint) endingPoint
{

 CGPoint originPoint = CGPointMake(endingPoint.x - startingPoint.x, endingPoint.y - startingPoint.y); // get origin point to origin by subtracting end from start
   float bearingRadians = atan2f(originPoint.y, originPoint.x); // get bearing in radians
float bearingDegrees = bearingRadians * (180.0 / M_PI); // convert to degrees
bearingDegrees = (bearingDegrees > 0.0 ? bearingDegrees : (360.0 + bearingDegrees)); // correct …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch transform image-rotation uiimageview ios

0
推荐指数
1
解决办法
1223
查看次数

在Swift,Cocoa,Mac OSX中旋转NSImage

有没有一种简单的方法可以在Mac OSX应用程序中旋转NSImage?或者只是使用Swift设置从纵向到横向的方向?

我正在玩CATransform3DMakeAffineTransform,但我无法让它工作.

CATransform3DMakeAffineTransform(CGAffineTransformMakeRotation(CGFloat(M_PI) * 90/180))
Run Code Online (Sandbox Code Playgroud)

这是我第一次使用转换.所以请耐心等待我:)也许我正在采取错误的方法......

有人能帮帮我吗?

谢谢!

cocoa image-rotation nsimage affinetransform swift

0
推荐指数
2
解决办法
4231
查看次数

如何在 Flutter 中更改背景图像的位置和旋转

我是 Flutter 的新手,我想知道如何在 Flutter 中更改背景图像的位置。我想在页面的一角显示背景图像,并由于 ovelflow 将其位置更改为图像的隐藏部分。

作为实现这一目标的前端开发人员,我考虑将图像的位置更改为绝对值并将底部和右侧设置为负值,但在 Flutter 中以不同的方式执行这些操作。

我如何在 Flutter 中实现这一点?

class _WaterIntakeState extends State<WaterIntake> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Stack(
        children: <Widget>[
          Container(
            color: Colors.white,
          ),
          Container(
            decoration: BoxDecoration(
                image: DecorationImage(
                  colorFilter: ColorFilter.mode(Colors.white.withOpacity(0.5), BlendMode.dstATop),
                  image: AssetImage("assets/images/drink-water.png"),
                  fit: BoxFit.fitWidth,
            )),
          ),
          Scaffold(
            backgroundColor: Colors.transparent,
            appBar: AppBar(
              title: Text('Water Intake'),
            ),
            body: Container(
//              child: const ButtonsWidget(),
            ),
          ),
        ],
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

当前状态 :

在此处输入图片说明

我想要的是 :

在此处输入图片说明

background-image image-rotation flutter flutter-layout

0
推荐指数
1
解决办法
1543
查看次数

-1
推荐指数
1
解决办法
1196
查看次数