用C#程序怎么区分A3/A4图像,并把它们各自转成相同大小?

天天学习哦 2013-09-16 10:15:38
文件夹中有一批A3 和A4图像混着,且各自大小不一,比如两张A3,像素大小也不是完全一样,我想用程序把它们都转成标准的A3/A4大小,该怎么写?
...全文
690 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
天天学习哦 2013-09-22
  • 打赏
  • 举报
回复
如果两张图的分辨率不同(一个200,一个300),但是像素一样大,那是否在同一电脑屏幕上显示时大小是一样的啊? 现在我的文件夹里混着原纸张幅面是A3和A4的扫描影像,分辨率有的200,有的300,我需要用程序把原纸张是A3的图像的像素都统一成一样的( 3508*4961),原纸张是A4的像素也都统一成一样的(2479*3508)。 但是我不知该怎么用程序来区分某张图原来的纸张是A3还是A4,也就不知该把它改成 3508*4961还是2479*3508 . 请大家帮我。
jshi123 2013-09-22
  • 打赏
  • 举报
回复
A3是29.7x42cm,也就是11.7x16.5inch(每英寸2.54cm),如果是200dpi,则是2340x3300像素,如果是300dpi,则是3510x4950像素,如果接近这两种像素范围的,可以认为是A3纸。 A4是21x29.7cm,也就是8.267x11.692inch(每英寸2.54cm),如果是200dpi,则是1653x2338像素,如果是300dpi,则是2480x3508像素,如果接近这两种像素范围的,可以认为是A4纸。
zhoujk 2013-09-21
  • 打赏
  • 举报
回复
某一边上的像素数量(个)/分辨率(DPI)=尺寸(英寸) 所以你可以通过调整像素数量或分辨率的方法来控制尺寸。如果想保证图像质量,尽量使用后者
天天学习哦 2013-09-20
  • 打赏
  • 举报
回复
我的图像是300DPI 当分辨率为300像素/英寸时,A4大小是2479*3508像素;A3是 3508*4961 可我不知怎么判断是A3还是A3的 有一幅300DPI的图像是4130*5835,明明是A4的,可尺寸为何比A3的像素还大?
yktd26 2013-09-20
  • 打赏
  • 举报
回复
引用 7 楼 u012141939 的回复:
我的图像是300DPI 当分辨率为300像素/英寸时,A4大小是2479*3508像素;A3是 3508*4961 可我不知怎么判断是A3还是A3的 有一幅300DPI的图像是4130*5835,明明是A4的,可尺寸为何比A3的像素还大?
一共有三个系数如果不想更改pixel数量那就需要更改分辨率,用上面的代码更改对应的dpi不可以么?
yktd26 2013-09-19
  • 打赏
  • 举报
回复
是不是只是需要计算出对应的dpi就可以了,根据像素和所需的size
using (Bitmap bitmap = (Bitmap)Image.FromFile("file.jpg"))
    {
        using (Bitmap newBitmap = new Bitmap(bitmap))
        {
            newBitmap.SetResolution(300, 300);
            newBitmap.Save("file300.jpg", ImageFormat.Jpeg);
        }
    }
tcmakebest 2013-09-19
  • 打赏
  • 举报
回复
图像本身大小是由像素表示的,但这与真实世界的纸张大小不是对应的,所以不存在A3大小的图这样的概念。 想像一下用相机拍照的时候,可以调整焦距,图像的大小是不断变化的。
Andy__Huang 2013-09-19
  • 打赏
  • 举报
回复
把图片转换成指定大小格式的文件,也就是自定义格式
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

namespace Test.Common
{
    /// <summary>
    /// 提供图片转换工具
    /// </summary>
    public static class ImageTransUtility
    {

        /// <summary>
        /// 该函数提供等比转换功能、图片仅进行压缩,不进行裁切.
        /// </summary>
        /// <param name="sourceFileName"></param>
        /// <param name="targetFileName"></param>
        /// <param name="maxWidth"></param>
        /// <param name="maxHeight"></param>
        public static void TranslateByEqualRatio(string sourceFileName, string targetFileName, int maxWidth, int maxHeight)
        {
            if (maxWidth <= 0 || maxHeight <= 0)
            {
                throw new ArgumentException("Width And Height Must More than zero");
            }

            Bitmap fullSizeImg = new Bitmap(sourceFileName);
            int width = fullSizeImg.Width;
            int height = fullSizeImg.Height;

            if (width > maxWidth || height > maxHeight)
            {
                if (maxWidth - width < maxHeight - height)
                {
                    decimal ratio = (decimal)height / width;
                    width = maxWidth;
                    height = (int)Decimal.Round(Convert.ToDecimal((decimal)maxWidth * (decimal)ratio));
                }
                else
                {
                    decimal ratio = (decimal)width / height;
                    height = maxHeight;
                    width = (int)Decimal.Round(Convert.ToDecimal((decimal)maxHeight * (decimal)ratio));
                }
            }

            var thumbnailBitmap = new Bitmap(width, height);
            var thumbnailGraph = Graphics.FromImage(thumbnailBitmap);

            thumbnailGraph.CompositingQuality = CompositingQuality.HighQuality;
            thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality;
            thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;

            var imageRectangle = new Rectangle(0, 0, width, height);
            thumbnailGraph.DrawImage(fullSizeImg, imageRectangle);

            thumbnailBitmap.Save(targetFileName, ImageFormat.Jpeg);

            fullSizeImg.Dispose();
            thumbnailGraph.Dispose();
            thumbnailBitmap.Dispose();
        }

    }
}
天天学习哦 2013-09-19
  • 打赏
  • 举报
回复
唉,自己再顶
天天学习哦 2013-09-17
  • 打赏
  • 举报
回复
GHZPMH
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧