找回密码
 加入
搜索
查看: 16944|回复: 25

[图形处理] 如何修改图片的分辨率?(已解决)

 火.. [复制链接]
发表于 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这些分别都是多少英寸?

希望指教一下谢谢。
发表于 2011-11-25 13:53:04 | 显示全部楼层
本帖最后由 afan 于 2011-11-25 13:58 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-25 14:42:18 | 显示全部楼层
回复 3# nmgwddj


    你这个就是我上面说的,拉高了……
 楼主| 发表于 2011-11-25 14:59:25 | 显示全部楼层
回复 4# afan

求思路A版
发表于 2011-11-25 15:06:48 | 显示全部楼层
回复  afan

我会在设置壁纸前先添加一部分文字或者png上去,增加一些效果。
nmgwddj 发表于 2011-11-25 14:20


你不能“后”添加文字吗,为什么要“先”添加好呢
 楼主| 发表于 2011-11-25 15:14:22 | 显示全部楼层
回复 6# seniors


    这个这个不太明白,已经设置为桌面了,如何再添加文字和png呢?

思路不应该是先添加好png和文字,整合到一个bmp里面再设置桌面壁纸吗?
发表于 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
 楼主| 发表于 2011-11-25 15:39:06 | 显示全部楼层
回复 8# afan


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

再次感谢。
 楼主| 发表于 2011-11-25 18:20:22 | 显示全部楼层
回复 8# afan


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

看了楼上有位碰说先设置壁纸再添加,不知道如何实现,实在头大了。
发表于 2011-11-25 18:54:03 | 显示全部楼层
回复 10# nmgwddj


    从1024*768转到1440*900 怎么不行呢 _PicChangeSize('需修改的.jpg', '修改后的.jpg', 1440, 900)
 楼主| 发表于 2011-11-25 19:05:58 | 显示全部楼层
写错代码,不好意思。
发表于 2011-11-25 20:32:53 | 显示全部楼层
发表于 2011-11-25 20:55:43 | 显示全部楼层
参考一下这个吧·
hzxymkb 发表于 2011-11-25 20:32



    他是要改尺寸,添加文字及图片水印他已经自行完成了
发表于 2011-11-25 21:11:26 | 显示全部楼层
回复 14# afan


    看错了!不好意思!打扰到A大了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 00:47 , Processed in 0.245451 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表