How do I enlarge an image imported onto a Tkinter canvas? - python

I am working on making a background for my video game but I can't figure out or find out how to make the image larger.
My code is:
from tkinter import *
Master = Tk()
Can = Canvas(Master, width=1325, height=400)
img = PhotoImage(file="G.E.N.E.S\Textures\Ppm's\G.E.N.E.S.-1.ppm")
Background = Can.create_image(0,160,anchor=NW,image=img)
Blob = Can.create_oval(650,385,675,360,fil="black")
Can.config(bg="white")
Can.pack()
How can I make the image larger on the Canvas?
I'd really appreciate anyone's help.
Note: I cant install any modules because I'm working at school.
P.S. I'm sorry but I can't figure out how to put a screen shot in.

You can use the .zoom method.
img = PhotoImage(file="G.E.N.E.S\Textures\Ppm's\G.E.N.E.S.-1.ppm")
img.zoom(2,2) # x, y
This will make the image larger by 2x both height and width. If x or y is not specified, x or y will stay the same.

Related

Unable to put transparent PNG over a normal image Python Tkinter

So I have 2 images, 1 image is supposed to be the background and the other 1 is just an image of a character.
I am able to put one image over the other but the image has white borders even though it's a PNG file.
This is how it looks like:
This is how I want it to look like:
Here are the two separte images:
https://imgur.com/a/SmE5lgC
Sorry that I didnt post the images directly but I can not since I do no have 10 reputation points.
I've tried converting it to RGBA but same thing happened.
from tkinter import *
from PIL import Image
root = Tk()
root.title("Game")
background = PhotoImage(file="back.png")
backgroundlabel = Label(root, image=background)
backgroundlabel.pack()
character = PhotoImage(file="hero.png")
characterlabel = Label(root, image=character)
characterlabel.place(x=0,y=0)
root.mainloop()
You just need to use the canvas widget in Tkinter. Only the canvas widget supports transparency. This has to do with how Tkinter draws the display. As of right now, your code is just overlaying two images. Tkinter does not know how to compose them with transparency unless you use the canvas widget.
See the following code:
from tkinter import *
from PIL import Image
root = Tk()
root.title("Game")
frame = Frame(root)
frame.pack()
canvas = Canvas(frame, bg="black", width=700, height=400)
canvas.pack()
background = PhotoImage(file="background.png")
canvas.create_image(350,200,image=background)
character = PhotoImage(file="hero.png")
canvas.create_image(30,30,image=character)
root.mainloop()
All I did was download the images you provided. I did not modify the images. So, the bottom line is that you just need to use the canvas widget.
VoilĂ !
Note: The question asked is a duplicate of How do I make Tkinter support PNG transparency?

How to add a partially transparent image to Tkinter?

I am making a game in Tkinter and I would really like partially transparent images in the game for obvious reasons...
How would I do that? PNG doesn't allow transparency, and JPEG does allow transparency but isn't considered an 'image file'... What file type would allow that? Can I use bitmap somehow to make a JPEG useable? Thanks!
Some use info:
I started learning Python 3 months ago and am not horribly good, but I do know classes, functions, and how to make stuff in Tkinter. I also obviously know a lot more, but as I said I am not too terribly good at it. Thanks!
Tkinter does recognise .ico files, but I have never used them apart from as an icon at the top left.
I would use a GIF file, and tk.PhotoImage to display it. This does allow for transparent images to be shown:
My Proof:
The image in a tk window, but when I change the background colour to say yellow, the button background is the same as the tk window background, so it is transparent.
EDIT: HERE IS CODE
import tkinter as tk
root = tk.Tk()
image1 = tk.PhotoImage(file = "FILENAME.gif")
label1 = tk.Button(image = image1)
label1.pack()
root.mainloop()
hope that helps you.
from tkinter import *
root = Tk()
startpic = PhotoImage(file = "ddsp.gif")
startbut = PhotoImage(file = "start.gif")
helpbut = PhotoImage(file = "help.gif")
exitbut = PhotoImage(file = "exit.gif")
root.geometry("640x480")
root.title("Deep Death")
root.resizable(0,0)
starter = Label(image = startpic)
starter.pack()
start = Label(image = startbut)
start.place(x=340,y=80)
root.mainloop()
Even though the .gifs' are transparent, they are appearing with a white background.

How to put a cropped image on a Tkinter Canvas in Python

I found a lot of similar questions, but not quite the solution to this case :
I want to
Load an image file from disk
Crop it (lazy or not)
Place it on a TKinter canvas
And oh, it would even be better that step 1 would not need to be a gif-file, but even if it has to be I'll be happy. That's it..
I can load a file, I can crop it (In PIL) I can place it on a canvas (In TKinter), but I don't seem able to combine it all.. (So maybe a simple cast from PIL to TKinter is enough?) I'm a newbee in TKinter of course.
There is ImageTk module in PIL.
from Tkinter import *
from PIL import Image, ImageTk
root = Tk()
canvas = Canvas(root, width=500, height=500)
canvas.pack()
im = Image.open("image.png")
cropped = im.crop((0, 0, 200, 200))
tk_im = ImageTk.PhotoImage(cropped)
canvas.create_image(250, 250, image=tk_im)
root.mainloop()

How do I make Tkinter support PNG transparency?

I put in a partially transparent PNG image in Tkinter and all I get is this
How do I make the dark triangle on the right clear? (like it's supposed to be)
This is python 2.6 on Windows 7, btw.
Here's an example (the PNG file example.png has lots of transparency in different places):
from Tkinter import Tk, Frame, Canvas
import ImageTk
t = Tk()
t.title("Transparency")
frame = Frame(t)
frame.pack()
canvas = Canvas(frame, bg="black", width=500, height=500)
canvas.pack()
photoimage = ImageTk.PhotoImage(file="example.png")
canvas.create_image(150, 150, image=photoimage)
t.mainloop()
You need to make sure the image has been stored as "RGBA" which is RGB with an alpha channel. You can check for that using a graphics program of your choice, or using PIL (Python Imaging Library):
import Image
im = Image.open("button.png")
print im.mode
This should print "RGBA". If not, you'll have to make sure the alpha channel is saved with the image. You'll have to consult your graphics program manual for how to do that.

Python imaging, resize Turtle Graphics window

My image is too large for the turtle window. I had to enlarge the image because the text I need at each spot overlaps.
How do I Resize the window in python?
It sounds like you have drawn an image, but it has gone outside the borders of the window, so therefore you need to make the window larger to see the entire image.
To resize the window:
setup( width = 200, height = 200, startx = None, starty = None)
This will make your output window 200X200 (which may be too small for you so you'll need to make those numbers larger.)
Here is the URL where I found this information.
TurtleDocs

Categories