Image的放大,缩小(zoom in,zoom out)


package com.example;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.view.KeyEvent;
import android.view.View;

public class Zoom extends View {
private Drawable image;
private int zoomControler = 20;

public Zoom(Context context) {
super(context);
image = context.getResources().getDrawable(R.drawable.icon);
setFocusable(true);

}

protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// here u can control the width and height of the images........ this
// line is very important
image.setBounds((getWidth() / 2) - zoomControler, (getHeight() / 2)
- zoomControler, (getWidth() / 2) + zoomControler,
(getHeight() / 2) + zoomControler);
image.draw(canvas);
}

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_DPAD_UP)// zoom in
zoomControler += 10;
if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) // zoom out
zoomControler -= 10;
if (zoomControler < 10)
zoomControler = 10;

invalidate();
return true;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Tkinter实现放大缩小图片,需要使用PIL库进行图像处理。以下是一个简单的示例代码: ```python from tkinter import * from PIL import Image, ImageTk class ImageZoomer: def __init__(self, master, filename): self.master = master self.filename = filename self.zoomlevel = 100 # 加载图像 self.image = Image.open(filename) self.tkimage = ImageTk.PhotoImage(self.image) # 创建画布 self.canvas = Canvas(master, width=self.image.width, height=self.image.height) self.canvas.pack(fill=BOTH, expand=YES) # 显示图像 self.canvas.create_image(0, 0, image=self.tkimage, anchor=NW) # 创建按钮 zoomin_button = Button(master, text="放大", command=self.zoomin) zoomin_button.pack(side=LEFT) zoomout_button = Button(master, text="缩小", command=self.zoomout) zoomout_button.pack(side=LEFT) def zoomin(self): self.zoomlevel += 10 self.redraw() def zoomout(self): self.zoomlevel -= 10 self.redraw() def redraw(self): # 计算新的图像大小 width = int(self.image.width * self.zoomlevel / 100) height = int(self.image.height * self.zoomlevel / 100) # 缩放图像 self.image = self.image.resize((width, height), Image.ANTIALIAS) self.tkimage = ImageTk.PhotoImage(self.image) # 更新画布 self.canvas.delete(ALL) self.canvas.config(width=width, height=height) self.canvas.create_image(0, 0, image=self.tkimage, anchor=NW) # 使用示例 root = Tk() app = ImageZoomer(root, "test.jpg") root.mainloop() ``` 这个示例程序,通过ImageZoomer实现了一个可以放大缩小图像的窗口。在初始化时,首先加载图像并显示在画布上。然后创建两个按钮,分别用于放大缩小图像。当用户点击按钮时,程序会重新计算图像大小,并使用PIL库的resize方法缩放图像。最后,更新画布上的图像显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值