nmgwddj 发表于 2011-11-25 13:16:01

如何修改图片的分辨率?(已解决)

本帖最后由 nmgwddj 于 2011-11-25 15:39 编辑

我是想通过判断桌面分辨率的大小,来设置一张图片的分辨率,方便来设置桌面背景。

假设我有一张1440*900像素的图片,但是我分辨率确实1024*768的,我需要先把图片改成1024*768,再设置壁纸,不知道这样是否可行,思路是否正确?

看了下_GDIPlus_BitmapSetResolution的用法,是根据英寸来修改的,不知道针对不同分辨率比如1024*768 1366*768 1440*900这些分别都是多少英寸?

希望指教一下谢谢。

afan 发表于 2011-11-25 13:53:04

本帖最后由 afan 于 2011-11-25 13:58 编辑

首先应该保证比例正确,否则图片会变形。如 1440*900 比例为1.6,若改为 1024*768 比例为1.333 图像就会被拉高。如果是MM,减肥很明显。
为保证不变形,需要先对源图片进行处理,可以有两种方式:
1,源图片上下补边
2,源图片裁切左右
最后再修改尺寸,收工。这里面有对画面的选择性调整问题,如果没有用户交互界面,可能效果不会人性化。

nmgwddj 发表于 2011-11-25 14:20:17

本帖最后由 nmgwddj 于 2011-11-25 14:37 编辑

回复 2# afan

换个方式提问吧,上面的思路很头疼!
假设我现在有2种显示器,一种分辨率是1024*768,一种分辨率是1440*900
而我的壁纸的像素也是1440*900的,我会在设置壁纸前先添加一部分文字或者png上去,增加一些效果。

当然在1440*900分辨率的显示器上显示是正常的,但是到了1024*768的显示器上,我添加的png和文字的宽度就会边窄。
如下两幅图

效果很不理想,上面提出的问题就是想在设置壁纸前先转换一下分辨率,再添加png和文字。
不知道还有没有其他更好的思路。
1440*900 正常状态的字体和png


1024*768 变窄的字体和png

afan 发表于 2011-11-25 14:42:18

回复 3# nmgwddj


    你这个就是我上面说的,拉高了……

nmgwddj 发表于 2011-11-25 14:59:25

回复 4# afan

{:face (340):}求思路A版

seniors 发表于 2011-11-25 15:06:48

回复afan

我会在设置壁纸前先添加一部分文字或者png上去,增加一些效果。
nmgwddj 发表于 2011-11-25 14:20 http://www.autoitx.com/images/common/back.gif

你不能“后”添加文字吗,为什么要“先”添加好呢

nmgwddj 发表于 2011-11-25 15:14:22

回复 6# seniors


    {:face (382):}这个这个不太明白,已经设置为桌面了,如何再添加文字和png呢?

思路不应该是先添加好png和文字,整合到一个bmp里面再设置桌面壁纸吗?

afan 发表于 2011-11-25 15:19:21

风景还好说(只要没有太阳或其它圆形参照物),直接拉伸修改至你需要的尺寸,再添加图片及文字。#include <GDIPlus.au3>

_PicChangeSize('1.jpg', '2.jpg', 1024, 768)

Func _PicChangeSize($sFile, $sFile_new, $new_W, $new_H)
        _GDIPlus_Startup()
        Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
        Local $hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
        Local $hBmp = _GDIPlus_BitmapCreateFromGraphics($new_W, $new_H, $hGraphics)
        Local $hImage_New = _GDIPlus_ImageGetGraphicsContext($hBmp)
        _GDIPlus_GraphicsDrawImageRect($hImage_New, $hImage, 0, 0, $new_W, $new_H)
        _GDIPlus_ImageSaveToFile($hBmp, $sFile_new)
        _GDIPlus_GraphicsDispose($hImage_New)
        _GDIPlus_BitmapDispose($hBmp)
        _GDIPlus_GraphicsDispose($hGraphics)
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_Shutdown()
EndFunc   ;==>_PicChangeSize

nmgwddj 发表于 2011-11-25 15:39:06

回复 8# afan


    感谢感谢,没想到您几分钟就做好了,看到您的思路我表示很无奈,没想到你真的用这种办法解决了。

再次感谢。

nmgwddj 发表于 2011-11-25 18:20:22

回复 8# afan


    如果图片从1024*768转到1440*900呢?上面的代码就不能转换了,是否是需要更换一下思路?

看了楼上有位碰说先设置壁纸再添加,不知道如何实现,实在头大了。

afan 发表于 2011-11-25 18:54:03

回复 10# nmgwddj


    从1024*768转到1440*900 怎么不行呢 _PicChangeSize('需修改的.jpg', '修改后的.jpg', 1440, 900)

nmgwddj 发表于 2011-11-25 19:05:58

{:face (239):}写错代码,不好意思。

hzxymkb 发表于 2011-11-25 20:32:53

http://www.autoitx.com/forum.php?mod=viewthread&tid=21400&extra=&highlight=png&page=1
参考一下这个吧·

afan 发表于 2011-11-25 20:55:43

参考一下这个吧·
hzxymkb 发表于 2011-11-25 20:32 http://www.autoitx.com/images/common/back.gif


    他是要改尺寸,添加文字及图片水印他已经自行完成了

hzxymkb 发表于 2011-11-25 21:11:26

回复 14# afan


    看错了!不好意思!打扰到A大了!
页: [1] 2
查看完整版本: 如何修改图片的分辨率?(已解决)